diff --git a/.bazelversion b/.bazelversion index b26a34e4705..b9ad1fa3a7f 100644 --- a/.bazelversion +++ b/.bazelversion @@ -1 +1 @@ -7.2.1 +5f5d70b6c4d2fb1a889479569107f1692239e8a7 diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 00000000000..89d6d3d66e2 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,13 @@ +### 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). diff --git a/.github/workflows/buildifier.yml b/.github/workflows/buildifier.yml index b5d1e2244d5..f3fbf97854c 100644 --- a/.github/workflows/buildifier.yml +++ b/.github/workflows/buildifier.yml @@ -24,5 +24,5 @@ jobs: extra_args: > buildifier --all-files 2>&1 || ( - echo -e "In order to format all bazel files, please run:\n bazel run //misc/bazel:buildifier"; exit 1 + echo -e "In order to format all bazel files, please run:\n bazel run //misc/bazel/buildifier"; 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..4a3242ce604 100644 --- a/.github/workflows/ruby-build.yml +++ b/.github/workflows/ruby-build.yml @@ -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/.gitignore b/.gitignore index a9a34f6bd4c..445faf8efaf 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 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 62ac0d95779..45935401bee 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -26,7 +26,7 @@ repos: name: Format bazel files files: \.(bazel|bzl) language: system - entry: bazel run //misc/bazel:buildifier + entry: bazel run //misc/bazel/buildifier pass_filenames: false # DISABLED: can be enabled by copying this config and installing `pre-commit` with `--config` on the copy diff --git a/MODULE.bazel b/MODULE.bazel index d2add26c88d..bba060ec962 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -15,10 +15,10 @@ local_path_override( # see https://registry.bazel.build/ for a list of available packages bazel_dep(name = "platforms", version = "0.0.10") -bazel_dep(name = "rules_go", version = "0.49.0") -bazel_dep(name = "rules_pkg", version = "0.10.1") +bazel_dep(name = "rules_go", version = "0.50.0") +bazel_dep(name = "rules_pkg", version = "1.0.1") bazel_dep(name = "rules_nodejs", version = "6.2.0-codeql.1") -bazel_dep(name = "rules_python", version = "0.32.2") +bazel_dep(name = "rules_python", version = "0.35.0") bazel_dep(name = "bazel_skylib", version = "1.6.1") bazel_dep(name = "abseil-cpp", version = "20240116.0", repo_name = "absl") bazel_dep(name = "nlohmann_json", version = "3.11.3", repo_name = "json") @@ -27,7 +27,7 @@ bazel_dep(name = "rules_kotlin", version = "1.9.4-codeql.1") bazel_dep(name = "gazelle", version = "0.38.0") bazel_dep(name = "rules_dotnet", version = "0.15.1") bazel_dep(name = "googletest", version = "1.14.0.bcr.1") -bazel_dep(name = "rules_rust", version = "0.49.1") +bazel_dep(name = "rules_rust", version = "0.49.3") bazel_dep(name = "buildifier_prebuilt", version = "6.4.0", dev_dependency = True) diff --git a/cpp/downgrades/02a123a1a681f98cf502f189a2a79b0dfb398e59/exprs.ql b/cpp/downgrades/02a123a1a681f98cf502f189a2a79b0dfb398e59/exprs.ql new file mode 100644 index 00000000000..e575df01b5c --- /dev/null +++ b/cpp/downgrades/02a123a1a681f98cf502f189a2a79b0dfb398e59/exprs.ql @@ -0,0 +1,17 @@ +class Expr extends @expr { + string toString() { none() } +} + +class Location extends @location_expr { + string toString() { none() } +} + +predicate isExprWithNewBuiltin(Expr expr) { + exists(int kind | exprs(expr, kind, _) | 385 <= kind and kind <= 388) +} + +from Expr expr, int kind, int kind_new, Location location +where + exprs(expr, kind, location) and + if isExprWithNewBuiltin(expr) then kind_new = 1 else kind_new = kind +select expr, kind_new, location diff --git a/cpp/downgrades/02a123a1a681f98cf502f189a2a79b0dfb398e59/old.dbscheme b/cpp/downgrades/02a123a1a681f98cf502f189a2a79b0dfb398e59/old.dbscheme new file mode 100644 index 00000000000..02a123a1a68 --- /dev/null +++ b/cpp/downgrades/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/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..c66bc4a4552 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.4.1 + +No user-facing changes. + ## 1.4.0 ### New Features diff --git a/cpp/ql/lib/change-notes/2024-08-28-more-builtin-operations.md b/cpp/ql/lib/change-notes/2024-08-28-more-builtin-operations.md new file mode 100644 index 00000000000..25314598759 --- /dev/null +++ b/cpp/ql/lib/change-notes/2024-08-28-more-builtin-operations.md @@ -0,0 +1,5 @@ +--- +category: feature +--- +* 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. diff --git a/cpp/ql/lib/change-notes/2024-08-30-c11-generics.md b/cpp/ql/lib/change-notes/2024-08-30-c11-generics.md new file mode 100644 index 00000000000..29f3579090b --- /dev/null +++ b/cpp/ql/lib/change-notes/2024-08-30-c11-generics.md @@ -0,0 +1,4 @@ +--- +category: feature +--- +* 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. diff --git a/cpp/ql/lib/change-notes/2024-09-03-outdated-deprecations.md b/cpp/ql/lib/change-notes/2024-09-03-outdated-deprecations.md new file mode 100644 index 00000000000..9db308c5d62 --- /dev/null +++ b/cpp/ql/lib/change-notes/2024-09-03-outdated-deprecations.md @@ -0,0 +1,11 @@ +--- +category: breaking +--- +* 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. diff --git a/cpp/ql/lib/change-notes/2024-09-03-realloc-data-flow.md b/cpp/ql/lib/change-notes/2024-09-03-realloc-data-flow.md new file mode 100644 index 00000000000..9245894c97e --- /dev/null +++ b/cpp/ql/lib/change-notes/2024-09-03-realloc-data-flow.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* 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/change-notes/2024-09-04-swap-data-flow.md b/cpp/ql/lib/change-notes/2024-09-04-swap-data-flow.md new file mode 100644 index 00000000000..22acd48ee32 --- /dev/null +++ b/cpp/ql/lib/change-notes/2024-09-04-swap-data-flow.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* 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. 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/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index b8b2e97d508..43ccf4467be 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: 1.4.1 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..049e5afd0eb 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: 1.4.2-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/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..917626daa0c 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 @@ -920,9 +926,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..26fc341735b 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. */ @@ -483,9 +480,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 +512,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 +549,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 +585,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 +662,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 +715,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 +818,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 +841,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..d04514c31aa 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 @@ -268,9 +268,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() } } 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/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..d5e4575e097 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 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/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-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-26-non-throwing-functions.md b/cpp/ql/src/change-notes/2024-08-26-non-throwing-functions.md new file mode 100644 index 00000000000..94acaaecc81 --- /dev/null +++ b/cpp/ql/src/change-notes/2024-08-26-non-throwing-functions.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* 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. \ No newline at end of file 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/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index 75430e73d1c..73dd403938c 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.1 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..291bde88faf 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.2-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/fields/ir-path-flow.expected b/cpp/ql/test/library-tests/dataflow/fields/ir-path-flow.expected index 98ca0290f47..43725bb4524 100644 --- a/cpp/ql/test/library-tests/dataflow/fields/ir-path-flow.expected +++ b/cpp/ql/test/library-tests/dataflow/fields/ir-path-flow.expected @@ -848,6 +848,8 @@ edges | simple.cpp:120:8:120:8 | *a [i] | simple.cpp:120:10:120:10 | i | provenance | | | struct_init.c:14:24:14:25 | *ab [a] | struct_init.c:14:24:14:25 | *ab [a] | provenance | | | struct_init.c:14:24:14:25 | *ab [a] | struct_init.c:15:8:15:9 | *ab [a] | provenance | | +| struct_init.c:14:24:14:25 | *ab [a] | struct_init.c:15:8:15:9 | *ab [a] | provenance | | +| struct_init.c:15:8:15:9 | *ab [a] | struct_init.c:15:12:15:12 | a | provenance | | | struct_init.c:15:8:15:9 | *ab [a] | struct_init.c:15:12:15:12 | a | provenance | | | struct_init.c:20:13:20:14 | *definition of ab [a] | struct_init.c:22:8:22:9 | *ab [a] | provenance | | | struct_init.c:20:13:20:14 | *definition of ab [a] | struct_init.c:24:10:24:12 | *& ... [a] | provenance | | @@ -1758,6 +1760,8 @@ nodes | simple.cpp:120:10:120:10 | i | semmle.label | i | | struct_init.c:14:24:14:25 | *ab [a] | semmle.label | *ab [a] | | struct_init.c:14:24:14:25 | *ab [a] | semmle.label | *ab [a] | +| struct_init.c:14:24:14:25 | *ab [a] | semmle.label | *ab [a] | +| struct_init.c:15:8:15:9 | *ab [a] | semmle.label | *ab [a] | | struct_init.c:15:8:15:9 | *ab [a] | semmle.label | *ab [a] | | struct_init.c:15:12:15:12 | a | semmle.label | a | | struct_init.c:20:13:20:14 | *definition of ab [a] | semmle.label | *definition of ab [a] | diff --git a/cpp/ql/test/library-tests/dataflow/fields/path-flow.expected b/cpp/ql/test/library-tests/dataflow/fields/path-flow.expected index 17cd0b7ce02..98e93029073 100644 --- a/cpp/ql/test/library-tests/dataflow/fields/path-flow.expected +++ b/cpp/ql/test/library-tests/dataflow/fields/path-flow.expected @@ -737,6 +737,8 @@ edges | simple.cpp:120:8:120:8 | a [i] | simple.cpp:120:10:120:10 | i | provenance | | | struct_init.c:14:24:14:25 | ab [a] | struct_init.c:14:24:14:25 | ab [a] | provenance | | | struct_init.c:14:24:14:25 | ab [a] | struct_init.c:15:8:15:9 | ab [a] | provenance | | +| struct_init.c:14:24:14:25 | ab [a] | struct_init.c:15:8:15:9 | ab [a] | provenance | | +| struct_init.c:15:8:15:9 | ab [a] | struct_init.c:15:12:15:12 | a | provenance | | | struct_init.c:15:8:15:9 | ab [a] | struct_init.c:15:12:15:12 | a | provenance | | | struct_init.c:15:8:15:9 | ab [a] | struct_init.c:15:12:15:12 | a | provenance | | | struct_init.c:15:8:15:9 | ab [post update] [a] | struct_init.c:14:24:14:25 | ab [a] | provenance | | @@ -1549,6 +1551,8 @@ nodes | simple.cpp:120:10:120:10 | i | semmle.label | i | | struct_init.c:14:24:14:25 | ab [a] | semmle.label | ab [a] | | struct_init.c:14:24:14:25 | ab [a] | semmle.label | ab [a] | +| struct_init.c:14:24:14:25 | ab [a] | semmle.label | ab [a] | +| struct_init.c:15:8:15:9 | ab [a] | semmle.label | ab [a] | | struct_init.c:15:8:15:9 | ab [a] | semmle.label | ab [a] | | struct_init.c:15:8:15:9 | ab [post update] [a] | semmle.label | ab [post update] [a] | | struct_init.c:15:12:15:12 | a | semmle.label | a | 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 1504142bdce..220265a3bb1 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp @@ -450,7 +450,7 @@ void test_qualifiers() b.member = source(); sink(b); // $ ir MISSING: ast sink(b.member); // $ ast,ir - sink(b.getMember()); // $ ir MISSING: ast + sink(b.getMember()); // $ MISSING: ir ast c = new MyClass2(0); @@ -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 a5e0c428b71..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); // $ ir MISSING:ast - sink(v3); // $ ir MISSING: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..c1697f3fc1a 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,112 @@ 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 3 + +# 39| Block 1 +# 39| r39_1(int) = Constant[0] : +# 39| r39_2(bool) = CompareEQ : r38_2, r39_1 +# 39| v39_3(void) = ConditionalBranch : r39_2 +#-----| False (back edge) -> Block 2 +#-----| True -> Block 5 + +# 39| Block 2 +# 39| r39_4(int) = Constant[1] : +# 39| r39_5(bool) = CompareEQ : r38_2, r39_4 +# 39| v39_6(void) = ConditionalBranch : r39_5 +#-----| False -> Block 5 +#-----| True (back edge) -> Block 4 + +# 38| Block 3 +# 38| m38_1(unknown) = Phi : from 0:~m36_5, from 4:~m40_5 +# 38| r38_2(int) = Constant[1] : +# 39| r39_7(int) = Constant[-1] : +# 39| r39_8(bool) = CompareEQ : r38_2, r39_7 +# 39| v39_9(void) = ConditionalBranch : r39_8 +#-----| False (back edge) -> Block 1 +#-----| True -> Block 5 + +# 40| Block 4 +# 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 : ~m38_1 +# 40| m40_5(unknown) = Chi : total:m38_1, partial:m40_4 +#-----| Exception (back edge) -> Block 3 + +# 32| Block 5 +# 32| v32_5(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 + +# 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 + +# 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 + ir.cpp: # 1| void Constants() # 1| Block 0 @@ -18910,18468 +19066,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..4fcb306f76d 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 @@ -6,8 +6,27 @@ missingOperandType duplicateChiOperand sideEffectWithoutPrimary instructionWithoutSuccessor +| ir.c:62:5:62:26 | Chi: call to ExRaiseAccessViolation | Instruction 'Chi: call to ExRaiseAccessViolation' has no successors in function '$@'. | ir.c:57:6:57:30 | void throw_in_try_with_finally() | void throw_in_try_with_finally() | +| ir.c:73:5:73:26 | Chi: call to ExRaiseAccessViolation | Instruction 'Chi: call to ExRaiseAccessViolation' has no successors in function '$@'. | ir.c:70:6:70:39 | void throw_in_try_with_throw_in_finally() | void throw_in_try_with_throw_in_finally() | +| ir.c:81:3:81:24 | Chi: call to ExRaiseAccessViolation | Instruction 'Chi: call to ExRaiseAccessViolation' has no successors in function '$@'. | ir.c:80:6:80:27 | void raise_access_violation() | void raise_access_violation() | ambiguousSuccessors unexplainedLoop +| ir.c:38:13:38:37 | Constant: 1 | Instruction 'Constant: 1' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:38:13:38:37 | Phi: 1 | Instruction 'Phi: 1' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | CompareEQ: { ... } | Instruction 'CompareEQ: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | CompareEQ: { ... } | Instruction 'CompareEQ: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | CompareEQ: { ... } | Instruction 'CompareEQ: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | ConditionalBranch: { ... } | Instruction 'ConditionalBranch: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | ConditionalBranch: { ... } | Instruction 'ConditionalBranch: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | ConditionalBranch: { ... } | Instruction 'ConditionalBranch: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | Constant: { ... } | Instruction 'Constant: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | Constant: { ... } | Instruction 'Constant: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | Constant: { ... } | Instruction 'Constant: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:40:5:40:26 | Call: call to ExRaiseAccessViolation | Instruction 'Call: call to ExRaiseAccessViolation' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:40:5:40:26 | CallSideEffect: call to ExRaiseAccessViolation | Instruction 'CallSideEffect: call to ExRaiseAccessViolation' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:40:5:40:26 | Chi: call to ExRaiseAccessViolation | Instruction 'Chi: call to ExRaiseAccessViolation' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:40:5:40:26 | FunctionAddress: call to ExRaiseAccessViolation | Instruction 'FunctionAddress: call to ExRaiseAccessViolation' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:40:28:40:28 | Constant: 1 | Instruction 'Constant: 1' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | unnecessaryPhiInstruction memoryOperandDefinitionIsUnmodeled operandAcrossFunctions @@ -18,6 +37,9 @@ containsLoopOfForwardEdges missingIRType multipleIRTypes lostReachability +| ir.c:39:3:41:3 | Constant: { ... } | Block 'Constant: { ... }' is not reachable by traversing only forward edges in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | Constant: { ... } | Block 'Constant: { ... }' is not reachable by traversing only forward edges in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:40:5:40:26 | FunctionAddress: call to ExRaiseAccessViolation | Block 'FunctionAddress: call to ExRaiseAccessViolation' is not reachable by traversing only forward edges in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | backEdgeCountMismatch useNotDominatedByDefinition switchInstructionWithoutDefaultEdge @@ -29,26 +51,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..4fcb306f76d 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 @@ -6,8 +6,27 @@ missingOperandType duplicateChiOperand sideEffectWithoutPrimary instructionWithoutSuccessor +| ir.c:62:5:62:26 | Chi: call to ExRaiseAccessViolation | Instruction 'Chi: call to ExRaiseAccessViolation' has no successors in function '$@'. | ir.c:57:6:57:30 | void throw_in_try_with_finally() | void throw_in_try_with_finally() | +| ir.c:73:5:73:26 | Chi: call to ExRaiseAccessViolation | Instruction 'Chi: call to ExRaiseAccessViolation' has no successors in function '$@'. | ir.c:70:6:70:39 | void throw_in_try_with_throw_in_finally() | void throw_in_try_with_throw_in_finally() | +| ir.c:81:3:81:24 | Chi: call to ExRaiseAccessViolation | Instruction 'Chi: call to ExRaiseAccessViolation' has no successors in function '$@'. | ir.c:80:6:80:27 | void raise_access_violation() | void raise_access_violation() | ambiguousSuccessors unexplainedLoop +| ir.c:38:13:38:37 | Constant: 1 | Instruction 'Constant: 1' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:38:13:38:37 | Phi: 1 | Instruction 'Phi: 1' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | CompareEQ: { ... } | Instruction 'CompareEQ: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | CompareEQ: { ... } | Instruction 'CompareEQ: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | CompareEQ: { ... } | Instruction 'CompareEQ: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | ConditionalBranch: { ... } | Instruction 'ConditionalBranch: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | ConditionalBranch: { ... } | Instruction 'ConditionalBranch: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | ConditionalBranch: { ... } | Instruction 'ConditionalBranch: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | Constant: { ... } | Instruction 'Constant: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | Constant: { ... } | Instruction 'Constant: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | Constant: { ... } | Instruction 'Constant: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:40:5:40:26 | Call: call to ExRaiseAccessViolation | Instruction 'Call: call to ExRaiseAccessViolation' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:40:5:40:26 | CallSideEffect: call to ExRaiseAccessViolation | Instruction 'CallSideEffect: call to ExRaiseAccessViolation' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:40:5:40:26 | Chi: call to ExRaiseAccessViolation | Instruction 'Chi: call to ExRaiseAccessViolation' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:40:5:40:26 | FunctionAddress: call to ExRaiseAccessViolation | Instruction 'FunctionAddress: call to ExRaiseAccessViolation' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:40:28:40:28 | Constant: 1 | Instruction 'Constant: 1' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | unnecessaryPhiInstruction memoryOperandDefinitionIsUnmodeled operandAcrossFunctions @@ -18,6 +37,9 @@ containsLoopOfForwardEdges missingIRType multipleIRTypes lostReachability +| ir.c:39:3:41:3 | Constant: { ... } | Block 'Constant: { ... }' is not reachable by traversing only forward edges in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | Constant: { ... } | Block 'Constant: { ... }' is not reachable by traversing only forward edges in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:40:5:40:26 | FunctionAddress: call to ExRaiseAccessViolation | Block 'FunctionAddress: call to ExRaiseAccessViolation' is not reachable by traversing only forward edges in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | backEdgeCountMismatch useNotDominatedByDefinition switchInstructionWithoutDefaultEdge @@ -29,26 +51,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..3a19d7174b1 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_consistency.expected @@ -6,8 +6,26 @@ missingOperandType duplicateChiOperand sideEffectWithoutPrimary instructionWithoutSuccessor +| ir.c:62:5:62:26 | CallSideEffect: call to ExRaiseAccessViolation | Instruction 'CallSideEffect: call to ExRaiseAccessViolation' has no successors in function '$@'. | ir.c:57:6:57:30 | void throw_in_try_with_finally() | void throw_in_try_with_finally() | +| ir.c:73:5:73:26 | CallSideEffect: call to ExRaiseAccessViolation | Instruction 'CallSideEffect: call to ExRaiseAccessViolation' has no successors in function '$@'. | ir.c:70:6:70:39 | void throw_in_try_with_throw_in_finally() | void throw_in_try_with_throw_in_finally() | +| ir.c:76:5:76:26 | CallSideEffect: call to ExRaiseAccessViolation | Instruction 'CallSideEffect: call to ExRaiseAccessViolation' has no successors in function '$@'. | ir.c:70:6:70:39 | void throw_in_try_with_throw_in_finally() | void throw_in_try_with_throw_in_finally() | +| ir.c:81:3:81:24 | CallSideEffect: call to ExRaiseAccessViolation | Instruction 'CallSideEffect: call to ExRaiseAccessViolation' has no successors in function '$@'. | ir.c:80:6:80:27 | void raise_access_violation() | void raise_access_violation() | ambiguousSuccessors unexplainedLoop +| ir.c:38:13:38:37 | Constant: 1 | Instruction 'Constant: 1' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | CompareEQ: { ... } | Instruction 'CompareEQ: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | CompareEQ: { ... } | Instruction 'CompareEQ: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | CompareEQ: { ... } | Instruction 'CompareEQ: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | ConditionalBranch: { ... } | Instruction 'ConditionalBranch: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | ConditionalBranch: { ... } | Instruction 'ConditionalBranch: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | ConditionalBranch: { ... } | Instruction 'ConditionalBranch: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | Constant: { ... } | Instruction 'Constant: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | Constant: { ... } | Instruction 'Constant: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | Constant: { ... } | Instruction 'Constant: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:40:5:40:26 | Call: call to ExRaiseAccessViolation | Instruction 'Call: call to ExRaiseAccessViolation' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:40:5:40:26 | CallSideEffect: call to ExRaiseAccessViolation | Instruction 'CallSideEffect: call to ExRaiseAccessViolation' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:40:5:40:26 | FunctionAddress: call to ExRaiseAccessViolation | Instruction 'FunctionAddress: call to ExRaiseAccessViolation' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:40:28:40:28 | Constant: 1 | Instruction 'Constant: 1' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | unnecessaryPhiInstruction memoryOperandDefinitionIsUnmodeled operandAcrossFunctions @@ -18,6 +36,10 @@ containsLoopOfForwardEdges missingIRType multipleIRTypes lostReachability +| ir.c:39:3:41:3 | Constant: { ... } | Block 'Constant: { ... }' is not reachable by traversing only forward edges in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | Constant: { ... } | Block 'Constant: { ... }' is not reachable by traversing only forward edges in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | Unwind: { ... } | Block 'Unwind: { ... }' is not reachable by traversing only forward edges in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:40:5:40:26 | FunctionAddress: call to ExRaiseAccessViolation | Block 'FunctionAddress: call to ExRaiseAccessViolation' is not reachable by traversing only forward edges in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | backEdgeCountMismatch useNotDominatedByDefinition | ir.cpp:1535:8:1535:8 | Unary | Operand 'Unary' is not dominated by its definition in function '$@'. | ir.cpp:1535:8:1535:8 | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | void StructuredBindingDataMemberStruct::StructuredBindingDataMemberStruct() | @@ -38,32 +60,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..1bfbcfe2871 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 @@ -2873,6 +2926,131 @@ ir.c: # 27| mu27_3(int) = Store[#return] : &:r27_1, r27_2 #-----| Goto -> Block 1 +# 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 4 + +# 39| Block 1 +# 39| r39_1(int) = Constant[0] : +# 39| r39_2(bool) = CompareEQ : r38_1, r39_1 +# 39| v39_3(void) = ConditionalBranch : r39_2 +#-----| False (back edge) -> Block 2 +#-----| True (back edge) -> Block 3 + +# 39| Block 2 +# 39| r39_4(int) = Constant[1] : +# 39| r39_5(bool) = CompareEQ : r38_1, r39_4 +# 39| v39_6(void) = ConditionalBranch : r39_5 +#-----| True (back edge) -> Block 5 + +# 39| Block 3 +# 39| v39_7(void) = Unwind : +# 42| v42_1(void) = NoOp : +# 32| v32_4(void) = ReturnVoid : +# 32| v32_5(void) = AliasedUse : ~m? +# 32| v32_6(void) = ExitFunction : + +# 38| Block 4 +# 38| r38_1(int) = Constant[1] : +# 39| r39_8(int) = Constant[-1] : +# 39| r39_9(bool) = CompareEQ : r38_1, r39_8 +# 39| v39_10(void) = ConditionalBranch : r39_9 +#-----| False (back edge) -> Block 1 +#-----| True (back edge) -> Block 3 + +# 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| mu40_4(unknown) = ^CallSideEffect : ~m? +#-----| Exception (back edge) -> Block 4 + +# 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 : +# 44| v44_5(void) = AliasedUse : ~m? +# 44| v44_6(void) = ExitFunction : + +# 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? + +# 66| Block 1 +# 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_4(void) = ReturnVoid : +# 57| v57_5(void) = AliasedUse : ~m? +# 57| v57_6(void) = ExitFunction : + +# 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? + +# 76| Block 1 +# 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? + +# 78| Block 2 +# 78| v78_1(void) = NoOp : +# 70| v70_4(void) = ReturnVoid : +# 70| v70_5(void) = AliasedUse : ~m? +# 70| v70_6(void) = ExitFunction : + +# 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? + +# 82| Block 1 +# 82| v82_1(void) = NoOp : +# 80| v80_4(void) = ReturnVoid : +# 80| v80_5(void) = AliasedUse : ~m? +# 80| v80_6(void) = ExitFunction : + ir.cpp: # 1| void Constants() # 1| Block 0 @@ -17201,18468 +17379,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() 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..a0143f9b0c6 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 @@ -6,8 +6,25 @@ missingOperandType duplicateChiOperand sideEffectWithoutPrimary instructionWithoutSuccessor +| ir.c:62:5:62:26 | CallSideEffect: call to ExRaiseAccessViolation | Instruction 'CallSideEffect: call to ExRaiseAccessViolation' has no successors in function '$@'. | ir.c:57:6:57:30 | void throw_in_try_with_finally() | void throw_in_try_with_finally() | +| ir.c:73:5:73:26 | CallSideEffect: call to ExRaiseAccessViolation | Instruction 'CallSideEffect: call to ExRaiseAccessViolation' has no successors in function '$@'. | ir.c:70:6:70:39 | void throw_in_try_with_throw_in_finally() | void throw_in_try_with_throw_in_finally() | +| ir.c:81:3:81:24 | CallSideEffect: call to ExRaiseAccessViolation | Instruction 'CallSideEffect: call to ExRaiseAccessViolation' has no successors in function '$@'. | ir.c:80:6:80:27 | void raise_access_violation() | void raise_access_violation() | ambiguousSuccessors unexplainedLoop +| ir.c:38:13:38:37 | Constant: 1 | Instruction 'Constant: 1' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | CompareEQ: { ... } | Instruction 'CompareEQ: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | CompareEQ: { ... } | Instruction 'CompareEQ: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | CompareEQ: { ... } | Instruction 'CompareEQ: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | ConditionalBranch: { ... } | Instruction 'ConditionalBranch: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | ConditionalBranch: { ... } | Instruction 'ConditionalBranch: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | ConditionalBranch: { ... } | Instruction 'ConditionalBranch: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | Constant: { ... } | Instruction 'Constant: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | Constant: { ... } | Instruction 'Constant: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | Constant: { ... } | Instruction 'Constant: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:40:5:40:26 | Call: call to ExRaiseAccessViolation | Instruction 'Call: call to ExRaiseAccessViolation' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:40:5:40:26 | CallSideEffect: call to ExRaiseAccessViolation | Instruction 'CallSideEffect: call to ExRaiseAccessViolation' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:40:5:40:26 | FunctionAddress: call to ExRaiseAccessViolation | Instruction 'FunctionAddress: call to ExRaiseAccessViolation' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:40:28:40:28 | Constant: 1 | Instruction 'Constant: 1' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | unnecessaryPhiInstruction memoryOperandDefinitionIsUnmodeled operandAcrossFunctions @@ -18,6 +35,9 @@ containsLoopOfForwardEdges missingIRType multipleIRTypes lostReachability +| ir.c:39:3:41:3 | Constant: { ... } | Block 'Constant: { ... }' is not reachable by traversing only forward edges in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | Constant: { ... } | Block 'Constant: { ... }' is not reachable by traversing only forward edges in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:40:5:40:26 | FunctionAddress: call to ExRaiseAccessViolation | Block 'FunctionAddress: call to ExRaiseAccessViolation' is not reachable by traversing only forward edges in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | backEdgeCountMismatch useNotDominatedByDefinition switchInstructionWithoutDefaultEdge @@ -29,26 +49,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..a0143f9b0c6 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 @@ -6,8 +6,25 @@ missingOperandType duplicateChiOperand sideEffectWithoutPrimary instructionWithoutSuccessor +| ir.c:62:5:62:26 | CallSideEffect: call to ExRaiseAccessViolation | Instruction 'CallSideEffect: call to ExRaiseAccessViolation' has no successors in function '$@'. | ir.c:57:6:57:30 | void throw_in_try_with_finally() | void throw_in_try_with_finally() | +| ir.c:73:5:73:26 | CallSideEffect: call to ExRaiseAccessViolation | Instruction 'CallSideEffect: call to ExRaiseAccessViolation' has no successors in function '$@'. | ir.c:70:6:70:39 | void throw_in_try_with_throw_in_finally() | void throw_in_try_with_throw_in_finally() | +| ir.c:81:3:81:24 | CallSideEffect: call to ExRaiseAccessViolation | Instruction 'CallSideEffect: call to ExRaiseAccessViolation' has no successors in function '$@'. | ir.c:80:6:80:27 | void raise_access_violation() | void raise_access_violation() | ambiguousSuccessors unexplainedLoop +| ir.c:38:13:38:37 | Constant: 1 | Instruction 'Constant: 1' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | CompareEQ: { ... } | Instruction 'CompareEQ: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | CompareEQ: { ... } | Instruction 'CompareEQ: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | CompareEQ: { ... } | Instruction 'CompareEQ: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | ConditionalBranch: { ... } | Instruction 'ConditionalBranch: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | ConditionalBranch: { ... } | Instruction 'ConditionalBranch: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | ConditionalBranch: { ... } | Instruction 'ConditionalBranch: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | Constant: { ... } | Instruction 'Constant: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | Constant: { ... } | Instruction 'Constant: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | Constant: { ... } | Instruction 'Constant: { ... }' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:40:5:40:26 | Call: call to ExRaiseAccessViolation | Instruction 'Call: call to ExRaiseAccessViolation' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:40:5:40:26 | CallSideEffect: call to ExRaiseAccessViolation | Instruction 'CallSideEffect: call to ExRaiseAccessViolation' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:40:5:40:26 | FunctionAddress: call to ExRaiseAccessViolation | Instruction 'FunctionAddress: call to ExRaiseAccessViolation' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:40:28:40:28 | Constant: 1 | Instruction 'Constant: 1' is part of an unexplained loop in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | unnecessaryPhiInstruction memoryOperandDefinitionIsUnmodeled operandAcrossFunctions @@ -18,6 +35,9 @@ containsLoopOfForwardEdges missingIRType multipleIRTypes lostReachability +| ir.c:39:3:41:3 | Constant: { ... } | Block 'Constant: { ... }' is not reachable by traversing only forward edges in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:39:3:41:3 | Constant: { ... } | Block 'Constant: { ... }' is not reachable by traversing only forward edges in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | +| ir.c:40:5:40:26 | FunctionAddress: call to ExRaiseAccessViolation | Block 'FunctionAddress: call to ExRaiseAccessViolation' is not reachable by traversing only forward edges in function '$@'. | ir.c:32:6:32:32 | void unexplained_loop_regression() | void unexplained_loop_regression() | backEdgeCountMismatch useNotDominatedByDefinition switchInstructionWithoutDefaultEdge @@ -29,26 +49,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/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-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 b922d7d8ba3..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:218:8:218:23 | *get_tainted_size | test.cpp:250:9:250:24 | call to get_tainted_size | provenance | | -| test.cpp:220:9:220:42 | ... * ... | test.cpp:218:8:218:23 | *get_tainted_size | provenance | | -| test.cpp:220:14:220:27 | *call to getenv | test.cpp:220:9:220:42 | ... * ... | provenance | TaintFunction | -| test.cpp:239:21:239:21 | s | test.cpp:240:21:240:21 | s | provenance | | -| test.cpp:246:19:246:52 | ... * ... | test.cpp:248:9:248:18 | local_size | provenance | | -| test.cpp:246:19:246:52 | ... * ... | test.cpp:254:11:254:20 | local_size | provenance | | -| test.cpp:246:19:246:52 | ... * ... | test.cpp:256:10:256:19 | local_size | provenance | | -| test.cpp:246:24:246:37 | *call to getenv | test.cpp:246:19:246:52 | ... * ... | provenance | TaintFunction | -| test.cpp:256:10:256:19 | local_size | test.cpp:239:21:239:21 | s | provenance | | -| test.cpp:259:20:259:27 | *out_size | test.cpp:298:17:298:20 | get_size output argument | provenance | | -| test.cpp:259:20:259:27 | *out_size | test.cpp:314:18:314:21 | get_size output argument | provenance | | -| test.cpp:260:2:260:32 | ... = ... | test.cpp:259:20:259:27 | *out_size | provenance | | -| test.cpp:260:18:260:31 | *call to getenv | test.cpp:260:2:260:32 | ... = ... | provenance | TaintFunction | -| test.cpp:268:15:268:18 | call to atoi | test.cpp:272:11:272:29 | ... * ... | provenance | | -| test.cpp:268:20:268:33 | *call to getenv | test.cpp:268:15:268:18 | call to atoi | provenance | TaintFunction | -| test.cpp:298:17:298:20 | get_size output argument | test.cpp:300:11:300:28 | ... * ... | provenance | | -| test.cpp:314:18:314:21 | get_size output argument | test.cpp:317:10:317:27 | ... * ... | provenance | | -| test.cpp:362:13:362:16 | call to atoi | test.cpp:364:35:364:38 | size | provenance | | -| test.cpp:362:13:362:16 | call to atoi | test.cpp:365:35:365:38 | size | provenance | | -| test.cpp:362:18:362:31 | *call to getenv | test.cpp:362:13:362: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:218:8:218:23 | *get_tainted_size | semmle.label | *get_tainted_size | -| test.cpp:220:9:220:42 | ... * ... | semmle.label | ... * ... | -| test.cpp:220:14:220:27 | *call to getenv | semmle.label | *call to getenv | -| test.cpp:239:21:239:21 | s | semmle.label | s | -| test.cpp:240:21:240:21 | s | semmle.label | s | -| test.cpp:246:19:246:52 | ... * ... | semmle.label | ... * ... | -| test.cpp:246:24:246:37 | *call to getenv | semmle.label | *call to getenv | -| test.cpp:248:9:248:18 | local_size | semmle.label | local_size | -| test.cpp:250:9:250:24 | call to get_tainted_size | semmle.label | call to get_tainted_size | -| test.cpp:254:11:254:20 | local_size | semmle.label | local_size | -| test.cpp:256:10:256:19 | local_size | semmle.label | local_size | -| test.cpp:259:20:259:27 | *out_size | semmle.label | *out_size | -| test.cpp:260:2:260:32 | ... = ... | semmle.label | ... = ... | -| test.cpp:260:18:260:31 | *call to getenv | semmle.label | *call to getenv | -| test.cpp:268:15:268:18 | call to atoi | semmle.label | call to atoi | -| test.cpp:268:20:268:33 | *call to getenv | semmle.label | *call to getenv | -| test.cpp:272:11:272:29 | ... * ... | semmle.label | ... * ... | -| test.cpp:298:17:298:20 | get_size output argument | semmle.label | get_size output argument | -| test.cpp:300:11:300:28 | ... * ... | semmle.label | ... * ... | -| test.cpp:314:18:314:21 | get_size output argument | semmle.label | get_size output argument | -| test.cpp:317:10:317:27 | ... * ... | semmle.label | ... * ... | -| test.cpp:362:13:362:16 | call to atoi | semmle.label | call to atoi | -| test.cpp:362:18:362:31 | *call to getenv | semmle.label | *call to getenv | -| test.cpp:364:35:364:38 | size | semmle.label | size | -| test.cpp:365:35:365: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:240:14:240:19 | call to malloc | test.cpp:246:24:246:37 | *call to getenv | test.cpp:240:21:240:21 | s | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:246:24:246:37 | *call to getenv | user input (an environment variable) | -| test.cpp:248:2:248:7 | call to malloc | test.cpp:246:24:246:37 | *call to getenv | test.cpp:248:9:248:18 | local_size | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:246:24:246:37 | *call to getenv | user input (an environment variable) | -| test.cpp:250:2:250:7 | call to malloc | test.cpp:220:14:220:27 | *call to getenv | test.cpp:250:9:250:24 | call to get_tainted_size | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:220:14:220:27 | *call to getenv | user input (an environment variable) | -| test.cpp:254:2:254:9 | call to my_alloc | test.cpp:246:24:246:37 | *call to getenv | test.cpp:254:11:254:20 | local_size | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:246:24:246:37 | *call to getenv | user input (an environment variable) | -| test.cpp:272:4:272:9 | call to malloc | test.cpp:268:20:268:33 | *call to getenv | test.cpp:272:11:272:29 | ... * ... | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:268:20:268:33 | *call to getenv | user input (an environment variable) | -| test.cpp:300:4:300:9 | call to malloc | test.cpp:260:18:260:31 | *call to getenv | test.cpp:300:11:300:28 | ... * ... | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:260:18:260:31 | *call to getenv | user input (an environment variable) | -| test.cpp:317:3:317:8 | call to malloc | test.cpp:260:18:260:31 | *call to getenv | test.cpp:317:10:317:27 | ... * ... | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:260:18:260:31 | *call to getenv | user input (an environment variable) | -| test.cpp:364:25:364:33 | call to MyMalloc1 | test.cpp:362:18:362:31 | *call to getenv | test.cpp:364:35:364:38 | size | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:362:18:362:31 | *call to getenv | user input (an environment variable) | -| test.cpp:365:25:365:33 | call to MyMalloc2 | test.cpp:362:18:362:31 | *call to getenv | test.cpp:365:35:365:38 | size | This allocation size is derived from $@ and could allocate arbitrary amounts of memory. | test.cpp:362:18:362: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 f85df3fb8cb..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 @@ -180,12 +180,33 @@ void more_bounded_tests() { } } + { + int size = atoi(getenv("USER")); + int size2 = size % 100; + malloc(size2 * sizeof(int)); // GOOD + } + { int size = atoi(getenv("USER")); if (size % 100) { - malloc(size * sizeof(int)); // GOOD + 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/autobuilder/Semmle.Autobuild.CSharp.Tests/BuildScripts.cs b/csharp/autobuilder/Semmle.Autobuild.CSharp.Tests/BuildScripts.cs index 612ca2320ce..d277331b12e 100644 --- a/csharp/autobuilder/Semmle.Autobuild.CSharp.Tests/BuildScripts.cs +++ b/csharp/autobuilder/Semmle.Autobuild.CSharp.Tests/BuildScripts.cs @@ -7,6 +7,7 @@ using System.Xml; using Microsoft.Build.Construction; using Semmle.Util; using Semmle.Autobuild.Shared; +using Semmle.Util.Logging; namespace Semmle.Autobuild.CSharp.Tests { @@ -203,7 +204,7 @@ namespace Semmle.Autobuild.CSharp.Tests throw new ArgumentException($"Missing CreateDirectory, {path}"); } - public void DownloadFile(string address, string fileName) + public void DownloadFile(string address, string fileName, ILogger logger) { if (!DownloadFiles.Contains((address, fileName))) throw new ArgumentException($"Missing DownloadFile, {address}, {fileName}"); diff --git a/csharp/autobuilder/Semmle.Autobuild.Cpp.Tests/BuildScripts.cs b/csharp/autobuilder/Semmle.Autobuild.Cpp.Tests/BuildScripts.cs index 605bb58755a..c74692bed75 100644 --- a/csharp/autobuilder/Semmle.Autobuild.Cpp.Tests/BuildScripts.cs +++ b/csharp/autobuilder/Semmle.Autobuild.Cpp.Tests/BuildScripts.cs @@ -7,6 +7,7 @@ using System.Linq; using Microsoft.Build.Construction; using System.Xml; using System.IO; +using Semmle.Util.Logging; namespace Semmle.Autobuild.Cpp.Tests { @@ -189,7 +190,7 @@ namespace Semmle.Autobuild.Cpp.Tests throw new ArgumentException($"Missing CreateDirectory, {path}"); } - public void DownloadFile(string address, string fileName) + public void DownloadFile(string address, string fileName, ILogger logger) { if (!DownloadFiles.Contains((address, fileName))) throw new ArgumentException($"Missing DownloadFile, {address}, {fileName}"); diff --git a/csharp/autobuilder/Semmle.Autobuild.Shared/MsBuildRule.cs b/csharp/autobuilder/Semmle.Autobuild.Shared/MsBuildRule.cs index 7827fe5c2e1..953f0884a44 100644 --- a/csharp/autobuilder/Semmle.Autobuild.Shared/MsBuildRule.cs +++ b/csharp/autobuilder/Semmle.Autobuild.Shared/MsBuildRule.cs @@ -157,7 +157,8 @@ namespace Semmle.Autobuild.Shared BuildScript.DownloadFile( FileUtils.NugetExeUrl, path, - e => builder.Logger.LogWarning($"Failed to download 'nuget.exe': {e.Message}")) + e => builder.Logger.LogWarning($"Failed to download 'nuget.exe': {e.Message}"), + builder.Logger) & BuildScript.Create(_ => { diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs index 0e47f1d1911..d0646ea921c 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs @@ -248,7 +248,8 @@ namespace Semmle.Extraction.CSharp.DependencyFetching var downloadDotNetInstallSh = BuildScript.DownloadFile( "https://dot.net/v1/dotnet-install.sh", dotnetInstallPath, - e => logger.LogWarning($"Failed to download 'dotnet-install.sh': {e.Message}")); + e => logger.LogWarning($"Failed to download 'dotnet-install.sh': {e.Message}"), + logger); var chmod = new CommandBuilder(actions). RunCommand("chmod"). diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetExeWrapper.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetExeWrapper.cs index 0371aed16e2..0676042eb42 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetExeWrapper.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetExeWrapper.cs @@ -145,7 +145,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching Directory.CreateDirectory(directory); logger.LogInfo("Attempting to download nuget.exe"); - FileUtils.DownloadFile(FileUtils.NugetExeUrl, nuget); + FileUtils.DownloadFile(FileUtils.NugetExeUrl, nuget, logger); logger.LogInfo($"Downloaded nuget.exe to {nuget}"); return nuget; } diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs index 3c8a977cf5f..3895db3e4d4 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs @@ -44,9 +44,9 @@ namespace Semmle.Extraction.CSharp.DependencyFetching this.logger = logger; this.compilationInfoContainer = compilationInfoContainer; - PackageDirectory = new TemporaryDirectory(ComputeTempDirectoryPath(fileProvider.SourceDir.FullName, "packages"), "package", logger); - legacyPackageDirectory = new TemporaryDirectory(ComputeTempDirectoryPath(fileProvider.SourceDir.FullName, "legacypackages"), "legacy package", logger); - missingPackageDirectory = new TemporaryDirectory(ComputeTempDirectoryPath(fileProvider.SourceDir.FullName, "missingpackages"), "missing package", logger); + PackageDirectory = new TemporaryDirectory(ComputeTempDirectoryPath("packages"), "package", logger); + legacyPackageDirectory = new TemporaryDirectory(ComputeTempDirectoryPath("legacypackages"), "legacy package", logger); + missingPackageDirectory = new TemporaryDirectory(ComputeTempDirectoryPath("missingpackages"), "missing package", logger); } public string? TryRestore(string package) @@ -338,7 +338,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching } logger.LogInfo($"Found {notYetDownloadedPackages.Count} packages that are not yet restored"); - using var tempDir = new TemporaryDirectory(ComputeTempDirectoryPath(fileProvider.SourceDir.FullName, "nugetconfig"), "generated nuget config", logger); + using var tempDir = new TemporaryDirectory(ComputeTempDirectoryPath("nugetconfig"), "generated nuget config", logger); var nugetConfig = fallbackNugetFeeds is null ? GetNugetConfig() : CreateFallbackNugetConfig(fallbackNugetFeeds, tempDir.DirInfo.FullName); @@ -771,19 +771,19 @@ namespace Semmle.Extraction.CSharp.DependencyFetching } /// - /// Computes a unique temp directory for the packages associated - /// with this source tree. Use a SHA1 of the directory name. + /// Returns the full path to a temporary directory with the given subfolder name. + /// + private static string ComputeTempDirectoryPath(string subfolderName) + { + return Path.Combine(FileUtils.GetTemporaryWorkingDirectory(out _), subfolderName); + } + + /// + /// Computes a unique temporary directory path based on the source directory and the subfolder name. /// - /// The full path of the temp directory. private static string ComputeTempDirectoryPath(string srcDir, string subfolderName) { - var bytes = Encoding.Unicode.GetBytes(srcDir); - var sha = SHA1.HashData(bytes); - var sb = new StringBuilder(); - foreach (var b in sha.Take(8)) - sb.AppendFormat("{0:x2}", b); - - return Path.Combine(FileUtils.GetTemporaryWorkingDirectory(out _), sb.ToString(), subfolderName); + return Path.Combine(FileUtils.GetTemporaryWorkingDirectory(out _), FileUtils.ComputeHash(srcDir), subfolderName); } } } diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/SourceGenerators/DotnetSourceGeneratorBase.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/SourceGenerators/DotnetSourceGeneratorBase.cs index 461590348df..c17981803dd 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/SourceGenerators/DotnetSourceGeneratorBase.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/SourceGenerators/DotnetSourceGeneratorBase.cs @@ -83,7 +83,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching var targetDir = GetTemporaryWorkingDirectory(FileType.ToLowerInvariant()); return groupedFiles - .SelectMany(group => sourceGenerator.RunSourceGenerator(group.Value, group.Key, references, targetDir)); + .SelectMany(group => sourceGenerator.RunSourceGenerator(group.Value, group.Key, references, targetDir, fileProvider.SourceDir.FullName)); } catch (Exception ex) { diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/SourceGenerators/DotnetSourceGeneratorWrapper/DotnetSourceGeneratorWrapper.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/SourceGenerators/DotnetSourceGeneratorWrapper/DotnetSourceGeneratorWrapper.cs index 308874d344e..2feafb8323b 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/SourceGenerators/DotnetSourceGeneratorWrapper/DotnetSourceGeneratorWrapper.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/SourceGenerators/DotnetSourceGeneratorWrapper/DotnetSourceGeneratorWrapper.cs @@ -33,11 +33,12 @@ namespace Semmle.Extraction.CSharp.DependencyFetching protected abstract void GenerateAnalyzerConfig(IEnumerable additionalFiles, string csprojFile, string analyzerConfigPath); - public IEnumerable RunSourceGenerator(IEnumerable additionalFiles, string csprojFile, IEnumerable references, string targetDir) + public IEnumerable RunSourceGenerator(IEnumerable additionalFiles, string csprojFile, IEnumerable references, string targetDir, string sourceDir) { try { - var name = Guid.NewGuid().ToString("N").ToUpper(); + var relativePathToCsProj = Path.GetRelativePath(sourceDir, csprojFile); + var name = FileUtils.ComputeHash($"{relativePathToCsProj}\n{this.GetType().Name}"); using var tempDir = new TemporaryDirectory(Path.Join(FileUtils.GetTemporaryWorkingDirectory(out _), "source-generator"), "source generator temporary", logger); var analyzerConfigPath = Path.Combine(tempDir.DirInfo.FullName, $"{name}.txt"); var dllPath = Path.Combine(tempDir.DirInfo.FullName, $"{name}.dll"); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/Compilation.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/Compilation.cs index 8685c9d7a7d..ecb5d51d44d 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/Compilation.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Compilations/Compilation.cs @@ -3,6 +3,7 @@ using System.Collections.Concurrent; using System.IO; using System.Linq; using Microsoft.CodeAnalysis; +using Semmle.Extraction.Entities; using Semmle.Util; namespace Semmle.Extraction.CSharp.Entities @@ -89,13 +90,21 @@ namespace Semmle.Extraction.CSharp.Entities trapFile.compilation_finished(this, (float)p.Total.Cpu.TotalSeconds, (float)p.Total.Elapsed.TotalSeconds); } + public void PopulateAggregatedMessages() + { + ExtractionMessage.groupedMessageCounts.ForEach(pair => + { + Context.TrapWriter.Writer.compilation_info(this, $"Extractor message count for group '{pair.Key}'", pair.Value.ToString()); + }); + } + public override void WriteId(EscapingTextWriter trapFile) { trapFile.Write(hashCode); trapFile.Write(";compilation"); } - public override Location ReportingLocation => throw new NotImplementedException(); + public override Microsoft.CodeAnalysis.Location ReportingLocation => throw new NotImplementedException(); public override bool NeedsPopulation => Context.IsAssemblyScope; diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/OrdinaryMethod.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/OrdinaryMethod.cs index 9ecfb3687b6..bd3a637a624 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/OrdinaryMethod.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/OrdinaryMethod.cs @@ -21,7 +21,7 @@ namespace Semmle.Extraction.CSharp.Entities public override Microsoft.CodeAnalysis.Location ReportingLocation => IsCompilerGeneratedDelegate() ? Symbol.ContainingType.GetSymbolLocation() - : Symbol.GetSymbolLocation(); + : BodyDeclaringSymbol.GetSymbolLocation(); public override bool NeedsPopulation => base.NeedsPopulation || IsCompilerGeneratedDelegate(); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Analyser.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Analyser.cs index 0b523e69b1a..b839d2c976a 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Analyser.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Analyser.cs @@ -250,6 +250,8 @@ namespace Semmle.Extraction.CSharp public void LogPerformance(Entities.PerformanceMetrics p) => compilationEntity.PopulatePerformance(p); + public void ExtractAggregatedMessages() => compilationEntity.PopulateAggregatedMessages(); + #nullable restore warnings /// diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Extractor.cs b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Extractor.cs index ae3875f5028..d87f6fd24c0 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Extractor.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Extractor/Extractor.cs @@ -458,6 +458,7 @@ namespace Semmle.Extraction.CSharp sw.Restart(); analyser.PerformExtraction(options.Threads); + analyser.ExtractAggregatedMessages(); sw.Stop(); var cpuTime2 = currentProcess.TotalProcessorTime; var userTime2 = currentProcess.UserProcessorTime; diff --git a/csharp/extractor/Semmle.Extraction/BUILD.bazel b/csharp/extractor/Semmle.Extraction/BUILD.bazel index de3a6c2d96a..83dfb8235e8 100644 --- a/csharp/extractor/Semmle.Extraction/BUILD.bazel +++ b/csharp/extractor/Semmle.Extraction/BUILD.bazel @@ -26,6 +26,7 @@ codeql_csharp_library( ], "//conditions:default": [], }), + internals_visible_to = ["Semmle.Extraction.CSharp"], visibility = ["//csharp:__subpackages__"], deps = [ "//csharp/extractor/Semmle.Util", diff --git a/csharp/extractor/Semmle.Extraction/Entities/ExtractionMessage.cs b/csharp/extractor/Semmle.Extraction/Entities/ExtractionMessage.cs index f417a170c10..514ce433c0a 100644 --- a/csharp/extractor/Semmle.Extraction/Entities/ExtractionMessage.cs +++ b/csharp/extractor/Semmle.Extraction/Entities/ExtractionMessage.cs @@ -1,4 +1,5 @@ -using System.IO; +using System.Collections.Concurrent; +using System.IO; using System.Threading; using Semmle.Util; @@ -7,6 +8,8 @@ namespace Semmle.Extraction.Entities internal class ExtractionMessage : FreshEntity { private static readonly int limit = EnvironmentVariables.TryGetExtractorNumberOption("MESSAGE_LIMIT") ?? 10000; + + internal static readonly ConcurrentDictionary groupedMessageCounts = []; private static int messageCount = 0; private readonly Message msg; @@ -25,6 +28,10 @@ namespace Semmle.Extraction.Entities protected override void Populate(TextWriter trapFile) { + // For the time being we're counting the number of messages per severity, we could introduce other groupings in the future + var key = msg.Severity.ToString(); + groupedMessageCounts.AddOrUpdate(key, 1, (_, c) => c + 1); + if (!bypassLimit) { var val = Interlocked.Increment(ref messageCount); diff --git a/csharp/extractor/Semmle.Extraction/Semmle.Extraction.csproj b/csharp/extractor/Semmle.Extraction/Semmle.Extraction.csproj index b4625b16017..2173a50f2ad 100644 --- a/csharp/extractor/Semmle.Extraction/Semmle.Extraction.csproj +++ b/csharp/extractor/Semmle.Extraction/Semmle.Extraction.csproj @@ -5,6 +5,8 @@ + + diff --git a/csharp/extractor/Semmle.Util/BuildActions.cs b/csharp/extractor/Semmle.Util/BuildActions.cs index e3a4e7ecafe..507af96d13c 100644 --- a/csharp/extractor/Semmle.Util/BuildActions.cs +++ b/csharp/extractor/Semmle.Util/BuildActions.cs @@ -6,7 +6,7 @@ using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Xml; -using Semmle.Util; +using Semmle.Util.Logging; namespace Semmle.Util { @@ -165,7 +165,7 @@ namespace Semmle.Util /// /// Downloads the resource with the specified URI to a local file. /// - void DownloadFile(string address, string fileName); + void DownloadFile(string address, string fileName, ILogger logger); /// /// Creates an for the given . @@ -280,8 +280,8 @@ namespace Semmle.Util public string EnvironmentExpandEnvironmentVariables(string s) => Environment.ExpandEnvironmentVariables(s); - public void DownloadFile(string address, string fileName) => - FileUtils.DownloadFile(address, fileName); + public void DownloadFile(string address, string fileName, ILogger logger) => + FileUtils.DownloadFile(address, fileName, logger); public IDiagnosticsWriter CreateDiagnosticsWriter(string filename) => new DiagnosticsStream(filename); diff --git a/csharp/extractor/Semmle.Util/BuildScript.cs b/csharp/extractor/Semmle.Util/BuildScript.cs index 9dd3ef9c8e9..27172add2b1 100644 --- a/csharp/extractor/Semmle.Util/BuildScript.cs +++ b/csharp/extractor/Semmle.Util/BuildScript.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.IO; +using Semmle.Util.Logging; namespace Semmle.Util { @@ -275,14 +276,14 @@ namespace Semmle.Util /// /// Creates a build script that downloads the specified file. /// - public static BuildScript DownloadFile(string address, string fileName, Action exceptionCallback) => + public static BuildScript DownloadFile(string address, string fileName, Action exceptionCallback, ILogger logger) => Create(actions => { if (actions.GetDirectoryName(fileName) is string dir && !string.IsNullOrWhiteSpace(dir)) actions.CreateDirectory(dir); try { - actions.DownloadFile(address, fileName); + actions.DownloadFile(address, fileName, logger); return 0; } catch (Exception e) diff --git a/csharp/extractor/Semmle.Util/FileUtils.cs b/csharp/extractor/Semmle.Util/FileUtils.cs index ff7eb879731..ce157a8268a 100644 --- a/csharp/extractor/Semmle.Util/FileUtils.cs +++ b/csharp/extractor/Semmle.Util/FileUtils.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Net.Http; using System.Security.Cryptography; using System.Text; +using System.Threading; using System.Threading.Tasks; using Semmle.Util.Logging; @@ -86,32 +87,78 @@ namespace Semmle.Util } /// - /// Computes the hash of . + /// Computes the hash of the file at . /// public static string ComputeFileHash(string filePath) { using var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read); - using var shaAlg = SHA256.Create(); - var sha = shaAlg.ComputeHash(fileStream); + var sha = SHA256.HashData(fileStream); + return GetHashString(sha); + } + + /// + /// Computes the hash of . + /// + public static string ComputeHash(string input) + { + var bytes = Encoding.Unicode.GetBytes(input); + var sha = MD5.HashData(bytes); // MD5 to keep it shorter than SHA256 + return GetHashString(sha).ToUpper(); + } + + private static string GetHashString(byte[] sha) + { var hex = new StringBuilder(sha.Length * 2); foreach (var b in sha) + { hex.AppendFormat("{0:x2}", b); + } return hex.ToString(); } - private static async Task DownloadFileAsync(string address, string filename) + private static async Task DownloadFileAsync(string address, string filename, HttpClient httpClient, CancellationToken token) { - using var httpClient = new HttpClient(); - using var contentStream = await httpClient.GetStreamAsync(address); + using var contentStream = await httpClient.GetStreamAsync(address, token); using var stream = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.None, 4096, true); - await contentStream.CopyToAsync(stream); + await contentStream.CopyToAsync(stream, token); + } + + private static void DownloadFileWithRetry(string address, string fileName, int tryCount, int timeoutMilliSeconds, ILogger logger) + { + logger.LogDebug($"Downloading {address} to {fileName}."); + using HttpClient client = new(); + + for (var i = 0; i < tryCount; i++) + { + logger.LogDebug($"Attempt {i + 1} of {tryCount}. Timeout: {timeoutMilliSeconds} ms."); + using var cts = new CancellationTokenSource(); + cts.CancelAfter(timeoutMilliSeconds); + try + { + DownloadFileAsync(address, fileName, client, cts.Token).GetAwaiter().GetResult(); + logger.LogDebug($"Downloaded {address} to {fileName}."); + return; + } + catch (Exception exc) + { + logger.LogDebug($"Failed to download {address} to {fileName}. Exception: {exc.Message}"); + timeoutMilliSeconds *= 2; + + if (i == tryCount - 1) + { + logger.LogDebug($"Failed to download {address} to {fileName} after {tryCount} attempts."); + // Rethrowing the last exception + throw; + } + } + } } /// /// Downloads the file at to . /// - public static void DownloadFile(string address, string fileName) => - DownloadFileAsync(address, fileName).GetAwaiter().GetResult(); + public static void DownloadFile(string address, string fileName, ILogger logger) => + DownloadFileWithRetry(address, fileName, tryCount: 3, timeoutMilliSeconds: 10000, logger); public static string ConvertPathToSafeRelativePath(string path) { diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index eb7af5234e3..18779106c78 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 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/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml index 6a79a0ec163..55921f9b14a 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.23 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 07db663f549..407855e6868 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.24-dev groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index eb7af5234e3..18779106c78 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 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/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml index 6a79a0ec163..55921f9b14a 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.23 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index 880aae8371f..9236640dbe5 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.24-dev groups: - csharp - solorigate diff --git a/csharp/ql/integration-tests/all-platforms/cshtml_standalone/Files.expected b/csharp/ql/integration-tests/all-platforms/cshtml_standalone/Files.expected index 5d52ff6223d..f64a66be22f 100644 --- a/csharp/ql/integration-tests/all-platforms/cshtml_standalone/Files.expected +++ b/csharp/ql/integration-tests/all-platforms/cshtml_standalone/Files.expected @@ -1,4 +1,4 @@ | Program.cs | | Views/Home/Index.cshtml | -| _ql_csharp_ql_integration_tests_all_platforms_cshtml_standalone_test_test_Views_Home_Index_cshtml.g.cs | | test-db/working/implicitUsings/GlobalUsings.g.cs | +| test-db/working/razor/EC52D77FE9BF67AD10C5C3F248392316/Microsoft.CodeAnalysis.Razor.Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/[...]_ql_csharp_ql_integration_tests_all_platforms_cshtml_standalone_test_test_Views_Home_Index_cshtml.g.cs | diff --git a/csharp/ql/integration-tests/all-platforms/cshtml_standalone/Files.ql b/csharp/ql/integration-tests/all-platforms/cshtml_standalone/Files.ql index 70a62a55481..2ab3af8e13e 100644 --- a/csharp/ql/integration-tests/all-platforms/cshtml_standalone/Files.ql +++ b/csharp/ql/integration-tests/all-platforms/cshtml_standalone/Files.ql @@ -4,11 +4,15 @@ private string getPath(File f) { result = f.getRelativePath() and not exists(result.indexOf("_ql_csharp_ql_integration_tests_all_platforms_cshtml_standalone_")) or - exists(int index | - index = + exists(int index1, int index2, string pattern | + pattern = "Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator" and + index1 = f.getRelativePath().indexOf(pattern) and + index2 = f.getRelativePath() .indexOf("_ql_csharp_ql_integration_tests_all_platforms_cshtml_standalone_") and - result = f.getRelativePath().substring(index, f.getRelativePath().length()) + result = + f.getRelativePath().substring(0, index1 + pattern.length()) + "/[...]" + + f.getRelativePath().substring(index2, f.getRelativePath().length()) ) } diff --git a/csharp/ql/integration-tests/all-platforms/cshtml_standalone_disabled/Files.expected b/csharp/ql/integration-tests/all-platforms/cshtml_standalone_disabled/Files.expected index f6d6d6ed8c8..50089b3c59c 100644 --- a/csharp/ql/integration-tests/all-platforms/cshtml_standalone_disabled/Files.expected +++ b/csharp/ql/integration-tests/all-platforms/cshtml_standalone_disabled/Files.expected @@ -1,2 +1,2 @@ -| Program.cs | -| test-db/working/implicitUsings/GlobalUsings.g.cs | +| Program.cs:0:0:0:0 | Program.cs | +| test-db/working/implicitUsings/GlobalUsings.g.cs:0:0:0:0 | test-db/working/implicitUsings/GlobalUsings.g.cs | diff --git a/csharp/ql/integration-tests/all-platforms/cshtml_standalone_disabled/Files.ql b/csharp/ql/integration-tests/all-platforms/cshtml_standalone_disabled/Files.ql index 2d983b86b7c..3933d037ed5 100644 --- a/csharp/ql/integration-tests/all-platforms/cshtml_standalone_disabled/Files.ql +++ b/csharp/ql/integration-tests/all-platforms/cshtml_standalone_disabled/Files.ql @@ -1,20 +1,5 @@ import csharp -private string getPath(File f) { - result = f.getRelativePath() and - not exists( - result - .indexOf("_semmle_code_target_codeql_csharp_integration_tests_ql_csharp_ql_integration_tests_all_platforms_cshtml_standalone_") - ) - or - exists(int index | - index = - f.getRelativePath() - .indexOf("_semmle_code_target_codeql_csharp_integration_tests_ql_csharp_ql_integration_tests_all_platforms_cshtml_standalone_") and - result = f.getRelativePath().substring(index, f.getRelativePath().length()) - ) -} - from File f where f.fromSource() or f.getExtension() = "cshtml" -select getPath(f) +select f diff --git a/csharp/ql/integration-tests/all-platforms/cshtml_standalone_net6/Files.expected b/csharp/ql/integration-tests/all-platforms/cshtml_standalone_net6/Files.expected index 3a66f337cff..65357c4e360 100644 --- a/csharp/ql/integration-tests/all-platforms/cshtml_standalone_net6/Files.expected +++ b/csharp/ql/integration-tests/all-platforms/cshtml_standalone_net6/Files.expected @@ -1,4 +1,4 @@ | Program.cs | | Views/Home/Index.cshtml | -| _ql_csharp_ql_integration_tests_all_platforms_cshtml_standalone_net6_test_test_Views_Home_Index_cshtml.g.cs | | test-db/working/implicitUsings/GlobalUsings.g.cs | +| test-db/working/razor/EC52D77FE9BF67AD10C5C3F248392316/[...]/Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator/[...]_ql_csharp_ql_integration_tests_all_platforms_cshtml_standalone_net6_test_test_Views_Home_Index_cshtml.g.cs | diff --git a/csharp/ql/integration-tests/all-platforms/cshtml_standalone_net6/Files.ql b/csharp/ql/integration-tests/all-platforms/cshtml_standalone_net6/Files.ql index 70a62a55481..f59129efe94 100644 --- a/csharp/ql/integration-tests/all-platforms/cshtml_standalone_net6/Files.ql +++ b/csharp/ql/integration-tests/all-platforms/cshtml_standalone_net6/Files.ql @@ -4,11 +4,19 @@ private string getPath(File f) { result = f.getRelativePath() and not exists(result.indexOf("_ql_csharp_ql_integration_tests_all_platforms_cshtml_standalone_")) or - exists(int index | - index = + exists(int index0, int index1, int index2, string pattern0, string pattern1 | + // TODO: Remove index0 and pattern0. Currently there's some instability in the path depending on which dotnet SDK is being used. (See issue #448) + pattern0 = "EC52D77FE9BF67AD10C5C3F248392316" and + index0 = f.getRelativePath().indexOf(pattern0) and + pattern1 = "Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator" and + index1 = f.getRelativePath().indexOf(pattern1) and + index2 = f.getRelativePath() .indexOf("_ql_csharp_ql_integration_tests_all_platforms_cshtml_standalone_") and - result = f.getRelativePath().substring(index, f.getRelativePath().length()) + result = + f.getRelativePath().substring(0, index0 + pattern0.length()) + "/[...]/" + + f.getRelativePath().substring(index1, index1 + pattern1.length()) + "/[...]" + + f.getRelativePath().substring(index2, f.getRelativePath().length()) ) } diff --git a/csharp/ql/integration-tests/all-platforms/standalone/Diag.expected b/csharp/ql/integration-tests/all-platforms/standalone/Diag.expected index 6d84e27e5ce..74314f2c0c9 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone/Diag.expected +++ b/csharp/ql/integration-tests/all-platforms/standalone/Diag.expected @@ -7,3 +7,5 @@ extractorMessagesLeachedLimit compilationInfo | Compiler diagnostic count for CS0103 | 3.0 | | Compiler diagnostic count for CS8019 | 7.0 | +| Extractor message count for group 'Error' | 8.0 | +| Extractor message count for group 'Warning' | 1.0 | diff --git a/csharp/ql/integration-tests/all-platforms/standalone/Diag.ql b/csharp/ql/integration-tests/all-platforms/standalone/Diag.ql index 8b1fbae6b2f..e2fa743471c 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone/Diag.ql +++ b/csharp/ql/integration-tests/all-platforms/standalone/Diag.ql @@ -11,7 +11,8 @@ query predicate extractorMessagesLeachedLimit(ExtractorMessage msg) { query predicate compilationInfo(string key, float value) { exists(Compilation c, string infoValue | - infoValue = c.getInfo(key) and key.matches("Compiler diagnostic count for%") + infoValue = c.getInfo(key) and + key.matches(["Compiler diagnostic count for%", "Extractor message count for group%"]) | value = infoValue.toFloat() ) diff --git a/csharp/ql/integration-tests/all-platforms/standalone_dependencies_net48/Assemblies.expected b/csharp/ql/integration-tests/all-platforms/standalone_dependencies_net48/Assemblies.expected index e845d165068..df67da6a52c 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone_dependencies_net48/Assemblies.expected +++ b/csharp/ql/integration-tests/all-platforms/standalone_dependencies_net48/Assemblies.expected @@ -1,235 +1,235 @@ -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Accessibility.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/CustomMarshalers.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/Microsoft.Win32.Primitives.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.AppContext.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Collections.Concurrent.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Collections.NonGeneric.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Collections.Specialized.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Collections.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.ComponentModel.Annotations.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.ComponentModel.EventBasedAsync.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.ComponentModel.Primitives.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.ComponentModel.TypeConverter.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.ComponentModel.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Console.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Data.Common.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Diagnostics.Contracts.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Diagnostics.Debug.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Diagnostics.FileVersionInfo.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Diagnostics.Process.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Diagnostics.StackTrace.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Diagnostics.TextWriterTraceListener.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Diagnostics.Tools.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Diagnostics.TraceSource.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Drawing.Primitives.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Dynamic.Runtime.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Globalization.Calendars.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Globalization.Extensions.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Globalization.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.IO.Compression.ZipFile.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.IO.FileSystem.DriveInfo.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.IO.FileSystem.Primitives.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.IO.FileSystem.Watcher.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.IO.FileSystem.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.IO.IsolatedStorage.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.IO.MemoryMappedFiles.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.IO.Pipes.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.IO.UnmanagedMemoryStream.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.IO.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Linq.Expressions.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Linq.Parallel.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Linq.Queryable.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Linq.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Net.Http.Rtc.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Net.NameResolution.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Net.NetworkInformation.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Net.Ping.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Net.Primitives.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Net.Requests.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Net.Security.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Net.Sockets.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Net.WebHeaderCollection.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Net.WebSockets.Client.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Net.WebSockets.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.ObjectModel.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Reflection.Emit.ILGeneration.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Reflection.Emit.Lightweight.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Reflection.Emit.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Reflection.Extensions.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Reflection.Primitives.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Reflection.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Resources.Reader.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Resources.ResourceManager.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Resources.Writer.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Runtime.CompilerServices.VisualC.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Runtime.Extensions.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Runtime.Handles.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Runtime.InteropServices.RuntimeInformation.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Runtime.InteropServices.WindowsRuntime.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Runtime.InteropServices.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Runtime.Numerics.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Runtime.Serialization.Formatters.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Runtime.Serialization.Json.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Runtime.Serialization.Primitives.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Runtime.Serialization.Xml.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Runtime.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Security.Claims.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Security.Cryptography.Algorithms.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Security.Cryptography.Csp.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Security.Cryptography.Encoding.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Security.Cryptography.Primitives.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Security.Cryptography.X509Certificates.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Security.Principal.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Security.SecureString.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.ServiceModel.Duplex.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.ServiceModel.Http.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.ServiceModel.NetTcp.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.ServiceModel.Primitives.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.ServiceModel.Security.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Text.Encoding.Extensions.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Text.Encoding.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Text.RegularExpressions.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Threading.Overlapped.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Threading.Tasks.Parallel.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Threading.Tasks.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Threading.Thread.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Threading.ThreadPool.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Threading.Timer.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Threading.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.ValueTuple.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Xml.ReaderWriter.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Xml.XDocument.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Xml.XPath.XDocument.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Xml.XPath.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Xml.XmlDocument.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Xml.XmlSerializer.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/netstandard.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/ISymWrapper.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Microsoft.Activities.Build.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Microsoft.Build.Conversion.v4.0.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Microsoft.Build.Engine.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Microsoft.Build.Framework.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Microsoft.Build.Tasks.v4.0.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Microsoft.Build.Utilities.v4.0.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Microsoft.Build.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Microsoft.CSharp.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Microsoft.JScript.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Microsoft.VisualBasic.Compatibility.Data.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Microsoft.VisualBasic.Compatibility.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Microsoft.VisualBasic.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Microsoft.VisualC.STLCLR.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Microsoft.VisualC.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/PresentationBuildTasks.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/PresentationCore.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/PresentationFramework.Aero2.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/PresentationFramework.Aero.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/PresentationFramework.AeroLite.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/PresentationFramework.Classic.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/PresentationFramework.Luna.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/PresentationFramework.Royale.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/PresentationFramework.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/ReachFramework.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Activities.Core.Presentation.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Activities.DurableInstancing.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Activities.Presentation.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Activities.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.AddIn.Contract.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.AddIn.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.ComponentModel.Composition.Registration.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.ComponentModel.Composition.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.ComponentModel.DataAnnotations.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Configuration.Install.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Configuration.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Core.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Data.DataSetExtensions.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Data.Entity.Design.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Data.Entity.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Data.Linq.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Data.OracleClient.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Data.Services.Client.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Data.Services.Design.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Data.Services.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Data.SqlXml.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Data.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Deployment.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Design.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Device.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Diagnostics.Tracing.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.DirectoryServices.AccountManagement.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.DirectoryServices.Protocols.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.DirectoryServices.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Drawing.Design.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Drawing.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Dynamic.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.EnterpriseServices.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.IO.Compression.FileSystem.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.IO.Compression.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.IO.Log.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.IdentityModel.Selectors.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.IdentityModel.Services.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.IdentityModel.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Management.Instrumentation.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Management.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Messaging.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Net.Http.WebRequest.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Net.Http.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Net.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Numerics.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Printing.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Reflection.Context.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Runtime.Caching.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Runtime.DurableInstancing.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Runtime.Remoting.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Runtime.Serialization.Formatters.Soap.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Runtime.Serialization.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Security.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.ServiceModel.Activation.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.ServiceModel.Activities.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.ServiceModel.Channels.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.ServiceModel.Discovery.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.ServiceModel.Routing.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.ServiceModel.Web.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.ServiceModel.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.ServiceProcess.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Speech.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Transactions.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.Abstractions.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.ApplicationServices.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.DataVisualization.Design.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.DataVisualization.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.DynamicData.Design.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.DynamicData.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.Entity.Design.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.Entity.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.Extensions.Design.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.Extensions.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.Mobile.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.RegularExpressions.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.Routing.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.Services.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Windows.Controls.Ribbon.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Windows.Forms.DataVisualization.Design.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Windows.Forms.DataVisualization.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Windows.Forms.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Windows.Input.Manipulations.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Windows.Presentation.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Windows.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Workflow.Activities.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Workflow.ComponentModel.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Workflow.Runtime.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.WorkflowServices.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Xaml.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Xml.Linq.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Xml.Serialization.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Xml.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/UIAutomationClient.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/UIAutomationClientsideProviders.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/UIAutomationProvider.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/UIAutomationTypes.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/WindowsBase.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/WindowsFormsIntegration.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/XamlBuildTask.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/mscorlib.dll | -| [...]/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/sysglobl.dll | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Accessibility.dll:0:0:0:0 | Accessibility, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/CustomMarshalers.dll:0:0:0:0 | CustomMarshalers, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/Microsoft.Win32.Primitives.dll:0:0:0:0 | Microsoft.Win32.Primitives, Version=4.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.AppContext.dll:0:0:0:0 | System.AppContext, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Collections.Concurrent.dll:0:0:0:0 | System.Collections.Concurrent, Version=4.0.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Collections.NonGeneric.dll:0:0:0:0 | System.Collections.NonGeneric, Version=4.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Collections.Specialized.dll:0:0:0:0 | System.Collections.Specialized, Version=4.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Collections.dll:0:0:0:0 | System.Collections, Version=4.0.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.ComponentModel.Annotations.dll:0:0:0:0 | System.ComponentModel.Annotations, Version=4.0.10.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.ComponentModel.EventBasedAsync.dll:0:0:0:0 | System.ComponentModel.EventBasedAsync, Version=4.0.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.ComponentModel.Primitives.dll:0:0:0:0 | System.ComponentModel.Primitives, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.ComponentModel.TypeConverter.dll:0:0:0:0 | System.ComponentModel.TypeConverter, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.ComponentModel.dll:0:0:0:0 | System.ComponentModel, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Console.dll:0:0:0:0 | System.Console, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Data.Common.dll:0:0:0:0 | System.Data.Common, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Diagnostics.Contracts.dll:0:0:0:0 | System.Diagnostics.Contracts, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Diagnostics.Debug.dll:0:0:0:0 | System.Diagnostics.Debug, Version=4.0.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Diagnostics.FileVersionInfo.dll:0:0:0:0 | System.Diagnostics.FileVersionInfo, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Diagnostics.Process.dll:0:0:0:0 | System.Diagnostics.Process, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Diagnostics.StackTrace.dll:0:0:0:0 | System.Diagnostics.StackTrace, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Diagnostics.TextWriterTraceListener.dll:0:0:0:0 | System.Diagnostics.TextWriterTraceListener, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Diagnostics.Tools.dll:0:0:0:0 | System.Diagnostics.Tools, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Diagnostics.TraceSource.dll:0:0:0:0 | System.Diagnostics.TraceSource, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Drawing.Primitives.dll:0:0:0:0 | System.Drawing.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Dynamic.Runtime.dll:0:0:0:0 | System.Dynamic.Runtime, Version=4.0.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Globalization.Calendars.dll:0:0:0:0 | System.Globalization.Calendars, Version=4.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Globalization.Extensions.dll:0:0:0:0 | System.Globalization.Extensions, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Globalization.dll:0:0:0:0 | System.Globalization, Version=4.0.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.IO.Compression.ZipFile.dll:0:0:0:0 | System.IO.Compression.ZipFile, Version=4.0.3.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.IO.FileSystem.DriveInfo.dll:0:0:0:0 | System.IO.FileSystem.DriveInfo, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.IO.FileSystem.Primitives.dll:0:0:0:0 | System.IO.FileSystem.Primitives, Version=4.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.IO.FileSystem.Watcher.dll:0:0:0:0 | System.IO.FileSystem.Watcher, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.IO.FileSystem.dll:0:0:0:0 | System.IO.FileSystem, Version=4.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.IO.IsolatedStorage.dll:0:0:0:0 | System.IO.IsolatedStorage, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.IO.MemoryMappedFiles.dll:0:0:0:0 | System.IO.MemoryMappedFiles, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.IO.Pipes.dll:0:0:0:0 | System.IO.Pipes, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.IO.UnmanagedMemoryStream.dll:0:0:0:0 | System.IO.UnmanagedMemoryStream, Version=4.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.IO.dll:0:0:0:0 | System.IO, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Linq.Expressions.dll:0:0:0:0 | System.Linq.Expressions, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Linq.Parallel.dll:0:0:0:0 | System.Linq.Parallel, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Linq.Queryable.dll:0:0:0:0 | System.Linq.Queryable, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Linq.dll:0:0:0:0 | System.Linq, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Net.Http.Rtc.dll:0:0:0:0 | System.Net.Http.Rtc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Net.NameResolution.dll:0:0:0:0 | System.Net.NameResolution, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Net.NetworkInformation.dll:0:0:0:0 | System.Net.NetworkInformation, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Net.Ping.dll:0:0:0:0 | System.Net.Ping, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Net.Primitives.dll:0:0:0:0 | System.Net.Primitives, Version=4.0.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Net.Requests.dll:0:0:0:0 | System.Net.Requests, Version=4.0.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Net.Security.dll:0:0:0:0 | System.Net.Security, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Net.Sockets.dll:0:0:0:0 | System.Net.Sockets, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Net.WebHeaderCollection.dll:0:0:0:0 | System.Net.WebHeaderCollection, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Net.WebSockets.Client.dll:0:0:0:0 | System.Net.WebSockets.Client, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Net.WebSockets.dll:0:0:0:0 | System.Net.WebSockets, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.ObjectModel.dll:0:0:0:0 | System.ObjectModel, Version=4.0.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Reflection.Emit.ILGeneration.dll:0:0:0:0 | System.Reflection.Emit.ILGeneration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Reflection.Emit.Lightweight.dll:0:0:0:0 | System.Reflection.Emit.Lightweight, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Reflection.Emit.dll:0:0:0:0 | System.Reflection.Emit, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Reflection.Extensions.dll:0:0:0:0 | System.Reflection.Extensions, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Reflection.Primitives.dll:0:0:0:0 | System.Reflection.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Reflection.dll:0:0:0:0 | System.Reflection, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Resources.Reader.dll:0:0:0:0 | System.Resources.Reader, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Resources.ResourceManager.dll:0:0:0:0 | System.Resources.ResourceManager, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Resources.Writer.dll:0:0:0:0 | System.Resources.Writer, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Runtime.CompilerServices.VisualC.dll:0:0:0:0 | System.Runtime.CompilerServices.VisualC, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Runtime.Extensions.dll:0:0:0:0 | System.Runtime.Extensions, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Runtime.Handles.dll:0:0:0:0 | System.Runtime.Handles, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Runtime.InteropServices.RuntimeInformation.dll:0:0:0:0 | System.Runtime.InteropServices.RuntimeInformation, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Runtime.InteropServices.WindowsRuntime.dll:0:0:0:0 | System.Runtime.InteropServices.WindowsRuntime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Runtime.InteropServices.dll:0:0:0:0 | System.Runtime.InteropServices, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Runtime.Numerics.dll:0:0:0:0 | System.Runtime.Numerics, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Runtime.Serialization.Formatters.dll:0:0:0:0 | System.Runtime.Serialization.Formatters, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Runtime.Serialization.Json.dll:0:0:0:0 | System.Runtime.Serialization.Json, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Runtime.Serialization.Primitives.dll:0:0:0:0 | System.Runtime.Serialization.Primitives, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Runtime.Serialization.Xml.dll:0:0:0:0 | System.Runtime.Serialization.Xml, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Runtime.dll:0:0:0:0 | System.Runtime, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Security.Claims.dll:0:0:0:0 | System.Security.Claims, Version=4.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Security.Cryptography.Algorithms.dll:0:0:0:0 | System.Security.Cryptography.Algorithms, Version=4.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Security.Cryptography.Csp.dll:0:0:0:0 | System.Security.Cryptography.Csp, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Security.Cryptography.Encoding.dll:0:0:0:0 | System.Security.Cryptography.Encoding, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Security.Cryptography.Primitives.dll:0:0:0:0 | System.Security.Cryptography.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Security.Cryptography.X509Certificates.dll:0:0:0:0 | System.Security.Cryptography.X509Certificates, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Security.Principal.dll:0:0:0:0 | System.Security.Principal, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Security.SecureString.dll:0:0:0:0 | System.Security.SecureString, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.ServiceModel.Duplex.dll:0:0:0:0 | System.ServiceModel.Duplex, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.ServiceModel.Http.dll:0:0:0:0 | System.ServiceModel.Http, Version=4.0.10.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.ServiceModel.NetTcp.dll:0:0:0:0 | System.ServiceModel.NetTcp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.ServiceModel.Primitives.dll:0:0:0:0 | System.ServiceModel.Primitives, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.ServiceModel.Security.dll:0:0:0:0 | System.ServiceModel.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Text.Encoding.Extensions.dll:0:0:0:0 | System.Text.Encoding.Extensions, Version=4.0.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Text.Encoding.dll:0:0:0:0 | System.Text.Encoding, Version=4.0.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Text.RegularExpressions.dll:0:0:0:0 | System.Text.RegularExpressions, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Threading.Overlapped.dll:0:0:0:0 | System.Threading.Overlapped, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Threading.Tasks.Parallel.dll:0:0:0:0 | System.Threading.Tasks.Parallel, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Threading.Tasks.dll:0:0:0:0 | System.Threading.Tasks, Version=4.0.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Threading.Thread.dll:0:0:0:0 | System.Threading.Thread, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Threading.ThreadPool.dll:0:0:0:0 | System.Threading.ThreadPool, Version=4.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Threading.Timer.dll:0:0:0:0 | System.Threading.Timer, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Threading.dll:0:0:0:0 | System.Threading, Version=4.0.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.ValueTuple.dll:0:0:0:0 | System.ValueTuple, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Xml.ReaderWriter.dll:0:0:0:0 | System.Xml.ReaderWriter, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Xml.XDocument.dll:0:0:0:0 | System.Xml.XDocument, Version=4.0.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Xml.XPath.XDocument.dll:0:0:0:0 | System.Xml.XPath.XDocument, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Xml.XPath.dll:0:0:0:0 | System.Xml.XPath, Version=4.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Xml.XmlDocument.dll:0:0:0:0 | System.Xml.XmlDocument, Version=4.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/System.Xml.XmlSerializer.dll:0:0:0:0 | System.Xml.XmlSerializer, Version=4.0.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Facades/netstandard.dll:0:0:0:0 | netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/ISymWrapper.dll:0:0:0:0 | ISymWrapper, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Microsoft.Activities.Build.dll:0:0:0:0 | Microsoft.Activities.Build, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Microsoft.Build.Conversion.v4.0.dll:0:0:0:0 | Microsoft.Build.Conversion.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Microsoft.Build.Engine.dll:0:0:0:0 | Microsoft.Build.Engine, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Microsoft.Build.Framework.dll:0:0:0:0 | Microsoft.Build.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Microsoft.Build.Tasks.v4.0.dll:0:0:0:0 | Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Microsoft.Build.Utilities.v4.0.dll:0:0:0:0 | Microsoft.Build.Utilities.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Microsoft.Build.dll:0:0:0:0 | Microsoft.Build, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Microsoft.CSharp.dll:0:0:0:0 | Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Microsoft.JScript.dll:0:0:0:0 | Microsoft.JScript, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Microsoft.VisualBasic.Compatibility.Data.dll:0:0:0:0 | Microsoft.VisualBasic.Compatibility.Data, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Microsoft.VisualBasic.Compatibility.dll:0:0:0:0 | Microsoft.VisualBasic.Compatibility, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Microsoft.VisualBasic.dll:0:0:0:0 | Microsoft.VisualBasic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Microsoft.VisualC.STLCLR.dll:0:0:0:0 | Microsoft.VisualC.STLCLR, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/Microsoft.VisualC.dll:0:0:0:0 | Microsoft.VisualC, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/PresentationBuildTasks.dll:0:0:0:0 | PresentationBuildTasks, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/PresentationCore.dll:0:0:0:0 | PresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/PresentationFramework.Aero2.dll:0:0:0:0 | PresentationFramework.Aero2, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/PresentationFramework.Aero.dll:0:0:0:0 | PresentationFramework.Aero, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/PresentationFramework.AeroLite.dll:0:0:0:0 | PresentationFramework.AeroLite, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/PresentationFramework.Classic.dll:0:0:0:0 | PresentationFramework.Classic, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/PresentationFramework.Luna.dll:0:0:0:0 | PresentationFramework.Luna, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/PresentationFramework.Royale.dll:0:0:0:0 | PresentationFramework.Royale, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/PresentationFramework.dll:0:0:0:0 | PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/ReachFramework.dll:0:0:0:0 | ReachFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Activities.Core.Presentation.dll:0:0:0:0 | System.Activities.Core.Presentation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Activities.DurableInstancing.dll:0:0:0:0 | System.Activities.DurableInstancing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Activities.Presentation.dll:0:0:0:0 | System.Activities.Presentation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Activities.dll:0:0:0:0 | System.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.AddIn.Contract.dll:0:0:0:0 | System.AddIn.Contract, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.AddIn.dll:0:0:0:0 | System.AddIn, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.ComponentModel.Composition.Registration.dll:0:0:0:0 | System.ComponentModel.Composition.Registration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.ComponentModel.Composition.dll:0:0:0:0 | System.ComponentModel.Composition, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.ComponentModel.DataAnnotations.dll:0:0:0:0 | System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Configuration.Install.dll:0:0:0:0 | System.Configuration.Install, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Configuration.dll:0:0:0:0 | System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Core.dll:0:0:0:0 | System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Data.DataSetExtensions.dll:0:0:0:0 | System.Data.DataSetExtensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Data.Entity.Design.dll:0:0:0:0 | System.Data.Entity.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Data.Entity.dll:0:0:0:0 | System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Data.Linq.dll:0:0:0:0 | System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Data.OracleClient.dll:0:0:0:0 | System.Data.OracleClient, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Data.Services.Client.dll:0:0:0:0 | System.Data.Services.Client, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Data.Services.Design.dll:0:0:0:0 | System.Data.Services.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Data.Services.dll:0:0:0:0 | System.Data.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Data.SqlXml.dll:0:0:0:0 | System.Data.SqlXml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Data.dll:0:0:0:0 | System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Deployment.dll:0:0:0:0 | System.Deployment, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Design.dll:0:0:0:0 | System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Device.dll:0:0:0:0 | System.Device, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Diagnostics.Tracing.dll:0:0:0:0 | System.Diagnostics.Tracing, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.DirectoryServices.AccountManagement.dll:0:0:0:0 | System.DirectoryServices.AccountManagement, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.DirectoryServices.Protocols.dll:0:0:0:0 | System.DirectoryServices.Protocols, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.DirectoryServices.dll:0:0:0:0 | System.DirectoryServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Drawing.Design.dll:0:0:0:0 | System.Drawing.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Drawing.dll:0:0:0:0 | System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Dynamic.dll:0:0:0:0 | System.Dynamic, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.EnterpriseServices.dll:0:0:0:0 | System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.IO.Compression.FileSystem.dll:0:0:0:0 | System.IO.Compression.FileSystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.IO.Compression.dll:0:0:0:0 | System.IO.Compression, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.IO.Log.dll:0:0:0:0 | System.IO.Log, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.IdentityModel.Selectors.dll:0:0:0:0 | System.IdentityModel.Selectors, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.IdentityModel.Services.dll:0:0:0:0 | System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.IdentityModel.dll:0:0:0:0 | System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Management.Instrumentation.dll:0:0:0:0 | System.Management.Instrumentation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Management.dll:0:0:0:0 | System.Management, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Messaging.dll:0:0:0:0 | System.Messaging, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Net.Http.WebRequest.dll:0:0:0:0 | System.Net.Http.WebRequest, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Net.Http.dll:0:0:0:0 | System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Net.dll:0:0:0:0 | System.Net, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Numerics.dll:0:0:0:0 | System.Numerics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Printing.dll:0:0:0:0 | System.Printing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Reflection.Context.dll:0:0:0:0 | System.Reflection.Context, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Runtime.Caching.dll:0:0:0:0 | System.Runtime.Caching, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Runtime.DurableInstancing.dll:0:0:0:0 | System.Runtime.DurableInstancing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Runtime.Remoting.dll:0:0:0:0 | System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Runtime.Serialization.Formatters.Soap.dll:0:0:0:0 | System.Runtime.Serialization.Formatters.Soap, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Runtime.Serialization.dll:0:0:0:0 | System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Security.dll:0:0:0:0 | System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.ServiceModel.Activation.dll:0:0:0:0 | System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.ServiceModel.Activities.dll:0:0:0:0 | System.ServiceModel.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.ServiceModel.Channels.dll:0:0:0:0 | System.ServiceModel.Channels, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.ServiceModel.Discovery.dll:0:0:0:0 | System.ServiceModel.Discovery, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.ServiceModel.Routing.dll:0:0:0:0 | System.ServiceModel.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.ServiceModel.Web.dll:0:0:0:0 | System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.ServiceModel.dll:0:0:0:0 | System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.ServiceProcess.dll:0:0:0:0 | System.ServiceProcess, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Speech.dll:0:0:0:0 | System.Speech, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Transactions.dll:0:0:0:0 | System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.Abstractions.dll:0:0:0:0 | System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.ApplicationServices.dll:0:0:0:0 | System.Web.ApplicationServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.DataVisualization.Design.dll:0:0:0:0 | System.Web.DataVisualization.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.DataVisualization.dll:0:0:0:0 | System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.DynamicData.Design.dll:0:0:0:0 | System.Web.DynamicData.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.DynamicData.dll:0:0:0:0 | System.Web.DynamicData, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.Entity.Design.dll:0:0:0:0 | System.Web.Entity.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.Entity.dll:0:0:0:0 | System.Web.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.Extensions.Design.dll:0:0:0:0 | System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.Extensions.dll:0:0:0:0 | System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.Mobile.dll:0:0:0:0 | System.Web.Mobile, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.RegularExpressions.dll:0:0:0:0 | System.Web.RegularExpressions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.Routing.dll:0:0:0:0 | System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.Services.dll:0:0:0:0 | System.Web.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Web.dll:0:0:0:0 | System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Windows.Controls.Ribbon.dll:0:0:0:0 | System.Windows.Controls.Ribbon, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Windows.Forms.DataVisualization.Design.dll:0:0:0:0 | System.Windows.Forms.DataVisualization.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Windows.Forms.DataVisualization.dll:0:0:0:0 | System.Windows.Forms.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Windows.Forms.dll:0:0:0:0 | System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Windows.Input.Manipulations.dll:0:0:0:0 | System.Windows.Input.Manipulations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Windows.Presentation.dll:0:0:0:0 | System.Windows.Presentation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Windows.dll:0:0:0:0 | System.Windows, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Workflow.Activities.dll:0:0:0:0 | System.Workflow.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Workflow.ComponentModel.dll:0:0:0:0 | System.Workflow.ComponentModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Workflow.Runtime.dll:0:0:0:0 | System.Workflow.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.WorkflowServices.dll:0:0:0:0 | System.WorkflowServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Xaml.dll:0:0:0:0 | System.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Xml.Linq.dll:0:0:0:0 | System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Xml.Serialization.dll:0:0:0:0 | System.Xml.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.Xml.dll:0:0:0:0 | System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/System.dll:0:0:0:0 | System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/UIAutomationClient.dll:0:0:0:0 | UIAutomationClient, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/UIAutomationClientsideProviders.dll:0:0:0:0 | UIAutomationClientsideProviders, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/UIAutomationProvider.dll:0:0:0:0 | UIAutomationProvider, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/UIAutomationTypes.dll:0:0:0:0 | UIAutomationTypes, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/WindowsBase.dll:0:0:0:0 | WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/WindowsFormsIntegration.dll:0:0:0:0 | WindowsFormsIntegration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/XamlBuildTask.dll:0:0:0:0 | XamlBuildTask, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/mscorlib.dll:0:0:0:0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netframework.referenceassemblies.net48/1.0.3/build/.NETFramework/v4.8/sysglobl.dll:0:0:0:0 | sysglobl, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | diff --git a/csharp/ql/integration-tests/all-platforms/standalone_dependencies_net48/Assemblies.ql b/csharp/ql/integration-tests/all-platforms/standalone_dependencies_net48/Assemblies.ql index b78ceee2d8f..931e64d87ba 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone_dependencies_net48/Assemblies.ql +++ b/csharp/ql/integration-tests/all-platforms/standalone_dependencies_net48/Assemblies.ql @@ -1,17 +1,5 @@ import csharp -private string getPath(Assembly a) { - not a.getCompilation().getOutputAssembly() = a and - exists(string s | s = a.getFile().getAbsolutePath() | - result = - "[...]" + - s.substring(s.indexOf("test-db/working/") + "test-db/working/".length() + 16 + - "/packages".length(), s.length()) - or - result = s and - not exists(s.indexOf("test-db/working/")) - ) -} - from Assembly a -select getPath(a) +where not a.getCompilation().getOutputAssembly() = a +select a diff --git a/csharp/ql/integration-tests/all-platforms/standalone_resx/Files.expected b/csharp/ql/integration-tests/all-platforms/standalone_resx/Files.expected index b2e8dfbb203..46a25f52fa6 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone_resx/Files.expected +++ b/csharp/ql/integration-tests/all-platforms/standalone_resx/Files.expected @@ -1,3 +1,3 @@ -| Program.cs | -| test-db/working/implicitUsings/GlobalUsings.g.cs | -| test-db/working/resx/[...]/Microsoft.CodeAnalysis.ResxSourceGenerator.CSharp/Microsoft.CodeAnalysis.ResxSourceGenerator.CSharp.CSharpResxGenerator/test.Designer.cs | +| Program.cs:0:0:0:0 | Program.cs | +| test-db/working/implicitUsings/GlobalUsings.g.cs:0:0:0:0 | test-db/working/implicitUsings/GlobalUsings.g.cs | +| test-db/working/resx/F4FAF6D9E0C1522913E76D38E8CF4F3F/Microsoft.CodeAnalysis.ResxSourceGenerator.CSharp/Microsoft.CodeAnalysis.ResxSourceGenerator.CSharp.CSharpResxGenerator/test.Designer.cs:0:0:0:0 | test-db/working/resx/F4FAF6D9E0C1522913E76D38E8CF4F3F/Microsoft.CodeAnalysis.ResxSourceGenerator.CSharp/Microsoft.CodeAnalysis.ResxSourceGenerator.CSharp.CSharpResxGenerator/test.Designer.cs | diff --git a/csharp/ql/integration-tests/all-platforms/standalone_resx/Files.ql b/csharp/ql/integration-tests/all-platforms/standalone_resx/Files.ql index f2eabef15f8..bea5557a25f 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone_resx/Files.ql +++ b/csharp/ql/integration-tests/all-platforms/standalone_resx/Files.ql @@ -1,22 +1,5 @@ import csharp -private string getPath(File f) { - result = f.getRelativePath() and - not exists( - result - .indexOf("Microsoft.CodeAnalysis.ResxSourceGenerator.CSharp/Microsoft.CodeAnalysis.ResxSourceGenerator.CSharp.CSharpResxGenerator") - ) - or - exists(int index | - index = - f.getRelativePath() - .indexOf("Microsoft.CodeAnalysis.ResxSourceGenerator.CSharp/Microsoft.CodeAnalysis.ResxSourceGenerator.CSharp.CSharpResxGenerator") and - result = - f.getRelativePath().substring(0, index - 32 - 2) + "/[...]/" + - f.getRelativePath().substring(index, f.getRelativePath().length()) - ) -} - from File f where f.fromSource() -select getPath(f) +select f diff --git a/csharp/ql/integration-tests/all-platforms/standalone_winforms/Assemblies.expected b/csharp/ql/integration-tests/all-platforms/standalone_winforms/Assemblies.expected index 058ec9e2f35..8b1e8810a07 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone_winforms/Assemblies.expected +++ b/csharp/ql/integration-tests/all-platforms/standalone_winforms/Assemblies.expected @@ -1,47 +1,47 @@ -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/Accessibility.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/Microsoft.VisualBasic.Forms.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/Microsoft.VisualBasic.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/Microsoft.Win32.Registry.AccessControl.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/Microsoft.Win32.SystemEvents.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationCore.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.Aero2.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.Aero.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.AeroLite.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.Classic.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.Luna.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.Royale.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationUI.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/ReachFramework.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.CodeDom.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Configuration.ConfigurationManager.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Design.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Diagnostics.EventLog.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Diagnostics.PerformanceCounter.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.DirectoryServices.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Drawing.Common.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Drawing.Design.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Drawing.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.IO.Packaging.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Printing.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Resources.Extensions.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Pkcs.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.ProtectedData.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Xml.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Security.Permissions.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Threading.AccessControl.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Controls.Ribbon.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Extensions.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Forms.Design.Editors.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Forms.Design.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Forms.Primitives.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Forms.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Input.Manipulations.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Presentation.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Xaml.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/UIAutomationClient.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/UIAutomationClientSideProviders.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/UIAutomationProvider.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/UIAutomationTypes.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/WindowsBase.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/WindowsFormsIntegration.dll | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/Accessibility.dll:0:0:0:0 | Accessibility, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/Microsoft.VisualBasic.Forms.dll:0:0:0:0 | Microsoft.VisualBasic.Forms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/Microsoft.VisualBasic.dll:0:0:0:0 | Microsoft.VisualBasic, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/Microsoft.Win32.Registry.AccessControl.dll:0:0:0:0 | Microsoft.Win32.Registry.AccessControl, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/Microsoft.Win32.SystemEvents.dll:0:0:0:0 | Microsoft.Win32.SystemEvents, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationCore.dll:0:0:0:0 | PresentationCore, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.Aero2.dll:0:0:0:0 | PresentationFramework.Aero2, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.Aero.dll:0:0:0:0 | PresentationFramework.Aero, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.AeroLite.dll:0:0:0:0 | PresentationFramework.AeroLite, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.Classic.dll:0:0:0:0 | PresentationFramework.Classic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.Luna.dll:0:0:0:0 | PresentationFramework.Luna, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.Royale.dll:0:0:0:0 | PresentationFramework.Royale, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.dll:0:0:0:0 | PresentationFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationUI.dll:0:0:0:0 | PresentationUI, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/ReachFramework.dll:0:0:0:0 | ReachFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.CodeDom.dll:0:0:0:0 | System.CodeDom, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Configuration.ConfigurationManager.dll:0:0:0:0 | System.Configuration.ConfigurationManager, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Design.dll:0:0:0:0 | System.Design, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Diagnostics.EventLog.dll:0:0:0:0 | System.Diagnostics.EventLog, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Diagnostics.PerformanceCounter.dll:0:0:0:0 | System.Diagnostics.PerformanceCounter, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.DirectoryServices.dll:0:0:0:0 | System.DirectoryServices, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Drawing.Common.dll:0:0:0:0 | System.Drawing.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Drawing.Design.dll:0:0:0:0 | System.Drawing.Design, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Drawing.dll:0:0:0:0 | System.Drawing, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.IO.Packaging.dll:0:0:0:0 | System.IO.Packaging, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Printing.dll:0:0:0:0 | System.Printing, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Resources.Extensions.dll:0:0:0:0 | System.Resources.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Pkcs.dll:0:0:0:0 | System.Security.Cryptography.Pkcs, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.ProtectedData.dll:0:0:0:0 | System.Security.Cryptography.ProtectedData, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Xml.dll:0:0:0:0 | System.Security.Cryptography.Xml, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Security.Permissions.dll:0:0:0:0 | System.Security.Permissions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Threading.AccessControl.dll:0:0:0:0 | System.Threading.AccessControl, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Controls.Ribbon.dll:0:0:0:0 | System.Windows.Controls.Ribbon, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Extensions.dll:0:0:0:0 | System.Windows.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Forms.Design.Editors.dll:0:0:0:0 | System.Windows.Forms.Design.Editors, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Forms.Design.dll:0:0:0:0 | System.Windows.Forms.Design, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Forms.Primitives.dll:0:0:0:0 | System.Windows.Forms.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Forms.dll:0:0:0:0 | System.Windows.Forms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Input.Manipulations.dll:0:0:0:0 | System.Windows.Input.Manipulations, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Presentation.dll:0:0:0:0 | System.Windows.Presentation, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Xaml.dll:0:0:0:0 | System.Xaml, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/UIAutomationClient.dll:0:0:0:0 | UIAutomationClient, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/UIAutomationClientSideProviders.dll:0:0:0:0 | UIAutomationClientSideProviders, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/UIAutomationProvider.dll:0:0:0:0 | UIAutomationProvider, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/UIAutomationTypes.dll:0:0:0:0 | UIAutomationTypes, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/WindowsBase.dll:0:0:0:0 | WindowsBase, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/WindowsFormsIntegration.dll:0:0:0:0 | WindowsFormsIntegration, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | diff --git a/csharp/ql/integration-tests/all-platforms/standalone_winforms/Assemblies.ql b/csharp/ql/integration-tests/all-platforms/standalone_winforms/Assemblies.ql index d47b596f0af..2ab708267f2 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone_winforms/Assemblies.ql +++ b/csharp/ql/integration-tests/all-platforms/standalone_winforms/Assemblies.ql @@ -1,11 +1,5 @@ import csharp -private string getPath(Assembly a) { - not a.getCompilation().getOutputAssembly() = a and - exists(string s | s = a.getFile().getAbsolutePath() | - result = "[...]" + s.substring(s.indexOf("microsoft.windowsdesktop.app.ref") - 1, s.length()) - ) -} - from Assembly a -select getPath(a) +where exists(a.getFile().getAbsolutePath().indexOf("microsoft.windowsdesktop.app.ref")) +select a diff --git a/csharp/ql/integration-tests/all-platforms/standalone_winforms/CompilationInfo.ql b/csharp/ql/integration-tests/all-platforms/standalone_winforms/CompilationInfo.ql index a96c2fd99a6..078e352be4d 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone_winforms/CompilationInfo.ql +++ b/csharp/ql/integration-tests/all-platforms/standalone_winforms/CompilationInfo.ql @@ -4,7 +4,7 @@ import semmle.code.csharp.commons.Diagnostics query predicate compilationInfo(string key, float value) { key != "Resolved references" and key != "Resolved assembly conflicts" and - not key.matches("Compiler diagnostic count for%") and + not key.matches(["Compiler diagnostic count for%", "Extractor message count for group%"]) and exists(Compilation c, string infoKey, string infoValue | infoValue = c.getInfo(infoKey) | key = infoKey and value = infoValue.toFloat() 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/standalone_dependencies/Assemblies.expected b/csharp/ql/integration-tests/posix-only/standalone_dependencies/Assemblies.expected deleted file mode 100644 index 2d54c0155a4..00000000000 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies/Assemblies.expected +++ /dev/null @@ -1,166 +0,0 @@ -| [...]/avalara.avatax/23.11.0/lib/netstandard2.0/Avalara.AvaTax.RestClient.dll | -| [...]/microsoft.bcl.asyncinterfaces/8.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.CSharp.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.VisualBasic.Core.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.VisualBasic.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.Win32.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.Win32.Registry.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.AppContext.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Buffers.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.Concurrent.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.Immutable.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.NonGeneric.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.Specialized.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.Annotations.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.DataAnnotations.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.EventBasedAsync.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.TypeConverter.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Configuration.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Console.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Core.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Data.Common.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Data.DataSetExtensions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Data.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Contracts.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Debug.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.DiagnosticSource.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.FileVersionInfo.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Process.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.StackTrace.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.TextWriterTraceListener.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Tools.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.TraceSource.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Tracing.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Drawing.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Drawing.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Dynamic.Runtime.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Formats.Asn1.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Formats.Tar.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Globalization.Calendars.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Globalization.Extensions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Globalization.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.Brotli.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.FileSystem.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.ZipFile.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.AccessControl.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.DriveInfo.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.Watcher.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.IsolatedStorage.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.MemoryMappedFiles.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Pipes.AccessControl.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Pipes.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.UnmanagedMemoryStream.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.Expressions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.Parallel.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.Queryable.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Memory.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Http.Json.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Http.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.HttpListener.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Mail.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.NameResolution.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.NetworkInformation.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Ping.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Quic.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Requests.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Security.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.ServicePoint.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Sockets.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebClient.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebHeaderCollection.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebProxy.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebSockets.Client.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebSockets.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Numerics.Vectors.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Numerics.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ObjectModel.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.DispatchProxy.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Emit.ILGeneration.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Emit.Lightweight.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Emit.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Extensions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Metadata.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.TypeExtensions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Resources.Reader.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Resources.ResourceManager.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Resources.Writer.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.CompilerServices.Unsafe.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.CompilerServices.VisualC.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Extensions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Handles.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.InteropServices.JavaScript.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.InteropServices.RuntimeInformation.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.InteropServices.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Intrinsics.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Loader.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Numerics.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Formatters.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Json.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Xml.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.AccessControl.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Claims.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Algorithms.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Cng.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Csp.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Encoding.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.OpenSsl.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.X509Certificates.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Principal.Windows.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Principal.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.SecureString.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ServiceModel.Web.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ServiceProcess.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encoding.CodePages.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encoding.Extensions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encoding.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encodings.Web.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Json.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.RegularExpressions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Channels.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Overlapped.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.Dataflow.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.Extensions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.Parallel.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Thread.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.ThreadPool.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Timer.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Transactions.Local.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Transactions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ValueTuple.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Web.HttpUtility.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Web.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Windows.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.Linq.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.ReaderWriter.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.Serialization.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XDocument.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XPath.XDocument.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XPath.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XmlDocument.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XmlSerializer.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/WindowsBase.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/mscorlib.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/netstandard.dll | -| [...]/newtonsoft.json/12.0.1/lib/netstandard2.0/Newtonsoft.Json.dll | diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies/Assemblies.ql b/csharp/ql/integration-tests/posix-only/standalone_dependencies/Assemblies.ql deleted file mode 100644 index b78ceee2d8f..00000000000 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies/Assemblies.ql +++ /dev/null @@ -1,17 +0,0 @@ -import csharp - -private string getPath(Assembly a) { - not a.getCompilation().getOutputAssembly() = a and - exists(string s | s = a.getFile().getAbsolutePath() | - result = - "[...]" + - s.substring(s.indexOf("test-db/working/") + "test-db/working/".length() + 16 + - "/packages".length(), s.length()) - or - result = s and - not exists(s.indexOf("test-db/working/")) - ) -} - -from Assembly a -select getPath(a) diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_executing_runtime/Assemblies.expected b/csharp/ql/integration-tests/posix-only/standalone_dependencies_executing_runtime/Assemblies.expected deleted file mode 100644 index c2742cebc57..00000000000 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies_executing_runtime/Assemblies.expected +++ /dev/null @@ -1,200 +0,0 @@ -| [...]/Basic.CompilerLog.Util.dll | -| [...]/Humanizer.dll | -| [...]/MessagePack.Annotations.dll | -| [...]/MessagePack.dll | -| [...]/Microsoft.Build.Framework.dll | -| [...]/Microsoft.Build.Utilities.Core.dll | -| [...]/Microsoft.Build.dll | -| [...]/Microsoft.CSharp.dll | -| [...]/Microsoft.CodeAnalysis.CSharp.Workspaces.dll | -| [...]/Microsoft.CodeAnalysis.CSharp.dll | -| [...]/Microsoft.CodeAnalysis.VisualBasic.Workspaces.dll | -| [...]/Microsoft.CodeAnalysis.VisualBasic.dll | -| [...]/Microsoft.CodeAnalysis.Workspaces.dll | -| [...]/Microsoft.CodeAnalysis.dll | -| [...]/Microsoft.Extensions.ObjectPool.dll | -| [...]/Microsoft.NET.StringTools.dll | -| [...]/Microsoft.VisualBasic.Core.dll | -| [...]/Microsoft.VisualBasic.dll | -| [...]/Microsoft.Win32.Primitives.dll | -| [...]/Microsoft.Win32.Registry.dll | -| [...]/Microsoft.Win32.SystemEvents.dll | -| [...]/Mono.Posix.NETStandard.dll | -| [...]/Newtonsoft.Json.dll | -| [...]/StructuredLogger.dll | -| [...]/System.AppContext.dll | -| [...]/System.Buffers.dll | -| [...]/System.Collections.Concurrent.dll | -| [...]/System.Collections.Immutable.dll | -| [...]/System.Collections.NonGeneric.dll | -| [...]/System.Collections.Specialized.dll | -| [...]/System.Collections.dll | -| [...]/System.ComponentModel.Annotations.dll | -| [...]/System.ComponentModel.DataAnnotations.dll | -| [...]/System.ComponentModel.EventBasedAsync.dll | -| [...]/System.ComponentModel.Primitives.dll | -| [...]/System.ComponentModel.TypeConverter.dll | -| [...]/System.ComponentModel.dll | -| [...]/System.Composition.AttributedModel.dll | -| [...]/System.Composition.Convention.dll | -| [...]/System.Composition.Hosting.dll | -| [...]/System.Composition.Runtime.dll | -| [...]/System.Composition.TypedParts.dll | -| [...]/System.Configuration.ConfigurationManager.dll | -| [...]/System.Configuration.dll | -| [...]/System.Console.dll | -| [...]/System.Core.dll | -| [...]/System.Data.Common.dll | -| [...]/System.Data.DataSetExtensions.dll | -| [...]/System.Data.dll | -| [...]/System.Diagnostics.Contracts.dll | -| [...]/System.Diagnostics.Debug.dll | -| [...]/System.Diagnostics.DiagnosticSource.dll | -| [...]/System.Diagnostics.EventLog.dll | -| [...]/System.Diagnostics.FileVersionInfo.dll | -| [...]/System.Diagnostics.Process.dll | -| [...]/System.Diagnostics.StackTrace.dll | -| [...]/System.Diagnostics.TextWriterTraceListener.dll | -| [...]/System.Diagnostics.Tools.dll | -| [...]/System.Diagnostics.TraceSource.dll | -| [...]/System.Diagnostics.Tracing.dll | -| [...]/System.Drawing.Common.dll | -| [...]/System.Drawing.Primitives.dll | -| [...]/System.Drawing.dll | -| [...]/System.Dynamic.Runtime.dll | -| [...]/System.Formats.Asn1.dll | -| [...]/System.Formats.Tar.dll | -| [...]/System.Globalization.Calendars.dll | -| [...]/System.Globalization.Extensions.dll | -| [...]/System.Globalization.dll | -| [...]/System.IO.Compression.Brotli.dll | -| [...]/System.IO.Compression.FileSystem.dll | -| [...]/System.IO.Compression.ZipFile.dll | -| [...]/System.IO.Compression.dll | -| [...]/System.IO.FileSystem.AccessControl.dll | -| [...]/System.IO.FileSystem.DriveInfo.dll | -| [...]/System.IO.FileSystem.Primitives.dll | -| [...]/System.IO.FileSystem.Watcher.dll | -| [...]/System.IO.FileSystem.dll | -| [...]/System.IO.IsolatedStorage.dll | -| [...]/System.IO.MemoryMappedFiles.dll | -| [...]/System.IO.Pipelines.dll | -| [...]/System.IO.Pipes.AccessControl.dll | -| [...]/System.IO.Pipes.dll | -| [...]/System.IO.UnmanagedMemoryStream.dll | -| [...]/System.IO.dll | -| [...]/System.Linq.Expressions.dll | -| [...]/System.Linq.Parallel.dll | -| [...]/System.Linq.Queryable.dll | -| [...]/System.Linq.dll | -| [...]/System.Memory.dll | -| [...]/System.Net.Http.Json.dll | -| [...]/System.Net.Http.dll | -| [...]/System.Net.HttpListener.dll | -| [...]/System.Net.Mail.dll | -| [...]/System.Net.NameResolution.dll | -| [...]/System.Net.NetworkInformation.dll | -| [...]/System.Net.Ping.dll | -| [...]/System.Net.Primitives.dll | -| [...]/System.Net.Quic.dll | -| [...]/System.Net.Requests.dll | -| [...]/System.Net.Security.dll | -| [...]/System.Net.ServicePoint.dll | -| [...]/System.Net.Sockets.dll | -| [...]/System.Net.WebClient.dll | -| [...]/System.Net.WebHeaderCollection.dll | -| [...]/System.Net.WebProxy.dll | -| [...]/System.Net.WebSockets.Client.dll | -| [...]/System.Net.WebSockets.dll | -| [...]/System.Net.dll | -| [...]/System.Numerics.Vectors.dll | -| [...]/System.Numerics.dll | -| [...]/System.ObjectModel.dll | -| [...]/System.Private.CoreLib.dll | -| [...]/System.Private.DataContractSerialization.dll | -| [...]/System.Private.Uri.dll | -| [...]/System.Private.Xml.Linq.dll | -| [...]/System.Private.Xml.dll | -| [...]/System.Reflection.DispatchProxy.dll | -| [...]/System.Reflection.Emit.ILGeneration.dll | -| [...]/System.Reflection.Emit.Lightweight.dll | -| [...]/System.Reflection.Emit.dll | -| [...]/System.Reflection.Extensions.dll | -| [...]/System.Reflection.Metadata.dll | -| [...]/System.Reflection.MetadataLoadContext.dll | -| [...]/System.Reflection.Primitives.dll | -| [...]/System.Reflection.TypeExtensions.dll | -| [...]/System.Reflection.dll | -| [...]/System.Resources.Reader.dll | -| [...]/System.Resources.ResourceManager.dll | -| [...]/System.Resources.Writer.dll | -| [...]/System.Runtime.CompilerServices.Unsafe.dll | -| [...]/System.Runtime.CompilerServices.VisualC.dll | -| [...]/System.Runtime.Extensions.dll | -| [...]/System.Runtime.Handles.dll | -| [...]/System.Runtime.InteropServices.JavaScript.dll | -| [...]/System.Runtime.InteropServices.RuntimeInformation.dll | -| [...]/System.Runtime.InteropServices.dll | -| [...]/System.Runtime.Intrinsics.dll | -| [...]/System.Runtime.Loader.dll | -| [...]/System.Runtime.Numerics.dll | -| [...]/System.Runtime.Serialization.Formatters.dll | -| [...]/System.Runtime.Serialization.Json.dll | -| [...]/System.Runtime.Serialization.Primitives.dll | -| [...]/System.Runtime.Serialization.Xml.dll | -| [...]/System.Runtime.Serialization.dll | -| [...]/System.Runtime.dll | -| [...]/System.Security.AccessControl.dll | -| [...]/System.Security.Claims.dll | -| [...]/System.Security.Cryptography.Algorithms.dll | -| [...]/System.Security.Cryptography.Cng.dll | -| [...]/System.Security.Cryptography.Csp.dll | -| [...]/System.Security.Cryptography.Encoding.dll | -| [...]/System.Security.Cryptography.OpenSsl.dll | -| [...]/System.Security.Cryptography.Primitives.dll | -| [...]/System.Security.Cryptography.ProtectedData.dll | -| [...]/System.Security.Cryptography.X509Certificates.dll | -| [...]/System.Security.Cryptography.dll | -| [...]/System.Security.Permissions.dll | -| [...]/System.Security.Principal.Windows.dll | -| [...]/System.Security.Principal.dll | -| [...]/System.Security.SecureString.dll | -| [...]/System.Security.dll | -| [...]/System.ServiceModel.Web.dll | -| [...]/System.ServiceProcess.dll | -| [...]/System.Text.Encoding.CodePages.dll | -| [...]/System.Text.Encoding.Extensions.dll | -| [...]/System.Text.Encoding.dll | -| [...]/System.Text.Encodings.Web.dll | -| [...]/System.Text.Json.dll | -| [...]/System.Text.RegularExpressions.dll | -| [...]/System.Threading.Channels.dll | -| [...]/System.Threading.Overlapped.dll | -| [...]/System.Threading.Tasks.Dataflow.dll | -| [...]/System.Threading.Tasks.Extensions.dll | -| [...]/System.Threading.Tasks.Parallel.dll | -| [...]/System.Threading.Tasks.dll | -| [...]/System.Threading.Thread.dll | -| [...]/System.Threading.ThreadPool.dll | -| [...]/System.Threading.Timer.dll | -| [...]/System.Threading.dll | -| [...]/System.Transactions.Local.dll | -| [...]/System.Transactions.dll | -| [...]/System.ValueTuple.dll | -| [...]/System.Web.HttpUtility.dll | -| [...]/System.Web.dll | -| [...]/System.Windows.Extensions.dll | -| [...]/System.Windows.dll | -| [...]/System.Xml.Linq.dll | -| [...]/System.Xml.ReaderWriter.dll | -| [...]/System.Xml.Serialization.dll | -| [...]/System.Xml.XDocument.dll | -| [...]/System.Xml.XPath.XDocument.dll | -| [...]/System.Xml.XPath.dll | -| [...]/System.Xml.XmlDocument.dll | -| [...]/System.Xml.XmlSerializer.dll | -| [...]/System.Xml.dll | -| [...]/System.dll | -| [...]/WindowsBase.dll | -| [...]/mscorlib.dll | -| [...]/netstandard.dll | diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_project/Assemblies.expected b/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_project/Assemblies.expected deleted file mode 100644 index 2d54c0155a4..00000000000 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_project/Assemblies.expected +++ /dev/null @@ -1,166 +0,0 @@ -| [...]/avalara.avatax/23.11.0/lib/netstandard2.0/Avalara.AvaTax.RestClient.dll | -| [...]/microsoft.bcl.asyncinterfaces/8.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.CSharp.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.VisualBasic.Core.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.VisualBasic.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.Win32.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.Win32.Registry.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.AppContext.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Buffers.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.Concurrent.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.Immutable.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.NonGeneric.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.Specialized.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.Annotations.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.DataAnnotations.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.EventBasedAsync.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.TypeConverter.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Configuration.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Console.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Core.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Data.Common.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Data.DataSetExtensions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Data.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Contracts.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Debug.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.DiagnosticSource.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.FileVersionInfo.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Process.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.StackTrace.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.TextWriterTraceListener.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Tools.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.TraceSource.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Tracing.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Drawing.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Drawing.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Dynamic.Runtime.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Formats.Asn1.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Formats.Tar.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Globalization.Calendars.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Globalization.Extensions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Globalization.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.Brotli.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.FileSystem.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.ZipFile.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.AccessControl.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.DriveInfo.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.Watcher.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.IsolatedStorage.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.MemoryMappedFiles.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Pipes.AccessControl.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Pipes.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.UnmanagedMemoryStream.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.Expressions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.Parallel.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.Queryable.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Memory.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Http.Json.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Http.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.HttpListener.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Mail.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.NameResolution.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.NetworkInformation.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Ping.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Quic.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Requests.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Security.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.ServicePoint.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Sockets.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebClient.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebHeaderCollection.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebProxy.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebSockets.Client.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebSockets.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Numerics.Vectors.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Numerics.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ObjectModel.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.DispatchProxy.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Emit.ILGeneration.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Emit.Lightweight.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Emit.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Extensions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Metadata.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.TypeExtensions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Resources.Reader.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Resources.ResourceManager.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Resources.Writer.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.CompilerServices.Unsafe.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.CompilerServices.VisualC.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Extensions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Handles.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.InteropServices.JavaScript.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.InteropServices.RuntimeInformation.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.InteropServices.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Intrinsics.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Loader.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Numerics.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Formatters.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Json.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Xml.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.AccessControl.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Claims.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Algorithms.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Cng.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Csp.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Encoding.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.OpenSsl.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.X509Certificates.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Principal.Windows.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Principal.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.SecureString.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ServiceModel.Web.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ServiceProcess.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encoding.CodePages.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encoding.Extensions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encoding.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encodings.Web.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Json.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.RegularExpressions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Channels.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Overlapped.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.Dataflow.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.Extensions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.Parallel.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Thread.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.ThreadPool.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Timer.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Transactions.Local.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Transactions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ValueTuple.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Web.HttpUtility.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Web.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Windows.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.Linq.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.ReaderWriter.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.Serialization.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XDocument.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XPath.XDocument.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XPath.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XmlDocument.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XmlSerializer.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/WindowsBase.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/mscorlib.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/netstandard.dll | -| [...]/newtonsoft.json/12.0.1/lib/netstandard2.0/Newtonsoft.Json.dll | diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_project/Assemblies.ql b/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_project/Assemblies.ql deleted file mode 100644 index b78ceee2d8f..00000000000 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_project/Assemblies.ql +++ /dev/null @@ -1,17 +0,0 @@ -import csharp - -private string getPath(Assembly a) { - not a.getCompilation().getOutputAssembly() = a and - exists(string s | s = a.getFile().getAbsolutePath() | - result = - "[...]" + - s.substring(s.indexOf("test-db/working/") + "test-db/working/".length() + 16 + - "/packages".length(), s.length()) - or - result = s and - not exists(s.indexOf("test-db/working/")) - ) -} - -from Assembly a -select getPath(a) diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/Assemblies.expected b/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/Assemblies.expected deleted file mode 100644 index c48fe98ac96..00000000000 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/Assemblies.expected +++ /dev/null @@ -1,163 +0,0 @@ -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.CSharp.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.VisualBasic.Core.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.VisualBasic.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.Win32.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.Win32.Registry.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.AppContext.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Buffers.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.Concurrent.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.Immutable.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.NonGeneric.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.Specialized.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.Annotations.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.DataAnnotations.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.EventBasedAsync.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.TypeConverter.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Configuration.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Console.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Core.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Data.Common.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Data.DataSetExtensions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Data.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Contracts.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Debug.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.DiagnosticSource.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.FileVersionInfo.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Process.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.StackTrace.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.TextWriterTraceListener.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Tools.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.TraceSource.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Tracing.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Drawing.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Drawing.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Dynamic.Runtime.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Formats.Asn1.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Formats.Tar.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Globalization.Calendars.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Globalization.Extensions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Globalization.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.Brotli.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.FileSystem.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.ZipFile.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.AccessControl.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.DriveInfo.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.Watcher.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.IsolatedStorage.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.MemoryMappedFiles.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Pipes.AccessControl.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Pipes.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.UnmanagedMemoryStream.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.Expressions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.Parallel.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.Queryable.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Memory.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Http.Json.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Http.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.HttpListener.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Mail.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.NameResolution.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.NetworkInformation.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Ping.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Quic.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Requests.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Security.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.ServicePoint.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Sockets.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebClient.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebHeaderCollection.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebProxy.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebSockets.Client.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebSockets.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Numerics.Vectors.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Numerics.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ObjectModel.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.DispatchProxy.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Emit.ILGeneration.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Emit.Lightweight.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Emit.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Extensions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Metadata.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.TypeExtensions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Resources.Reader.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Resources.ResourceManager.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Resources.Writer.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.CompilerServices.Unsafe.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.CompilerServices.VisualC.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Extensions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Handles.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.InteropServices.JavaScript.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.InteropServices.RuntimeInformation.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.InteropServices.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Intrinsics.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Loader.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Numerics.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Formatters.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Json.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Xml.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.AccessControl.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Claims.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Algorithms.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Cng.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Csp.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Encoding.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.OpenSsl.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.X509Certificates.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Principal.Windows.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Principal.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.SecureString.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ServiceModel.Web.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ServiceProcess.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encoding.CodePages.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encoding.Extensions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encoding.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encodings.Web.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Json.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.RegularExpressions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Channels.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Overlapped.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.Dataflow.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.Extensions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.Parallel.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Thread.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.ThreadPool.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Timer.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Transactions.Local.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Transactions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ValueTuple.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Web.HttpUtility.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Web.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Windows.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.Linq.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.ReaderWriter.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.Serialization.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XDocument.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XPath.XDocument.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XPath.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XmlDocument.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XmlSerializer.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/WindowsBase.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/mscorlib.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/netstandard.dll | diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/Assemblies.ql b/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/Assemblies.ql deleted file mode 100644 index b78ceee2d8f..00000000000 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies_multi_target/Assemblies.ql +++ /dev/null @@ -1,17 +0,0 @@ -import csharp - -private string getPath(Assembly a) { - not a.getCompilation().getOutputAssembly() = a and - exists(string s | s = a.getFile().getAbsolutePath() | - result = - "[...]" + - s.substring(s.indexOf("test-db/working/") + "test-db/working/".length() + 16 + - "/packages".length(), s.length()) - or - result = s and - not exists(s.indexOf("test-db/working/")) - ) -} - -from Assembly a -select getPath(a) diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_no_framework/Assemblies.expected b/csharp/ql/integration-tests/posix-only/standalone_dependencies_no_framework/Assemblies.expected deleted file mode 100644 index ec1192ed029..00000000000 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies_no_framework/Assemblies.expected +++ /dev/null @@ -1 +0,0 @@ -| [...]/packages/newtonsoft.json/6.0.4/lib/net45/Newtonsoft.Json.dll | diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_no_framework/Assemblies.ql b/csharp/ql/integration-tests/posix-only/standalone_dependencies_no_framework/Assemblies.ql deleted file mode 100644 index e542b688455..00000000000 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies_no_framework/Assemblies.ql +++ /dev/null @@ -1,16 +0,0 @@ -import csharp - -private string getPath(Assembly a) { - not a.getCompilation().getOutputAssembly() = a and - exists(string s | s = a.getFile().getAbsolutePath() | - result = - "[...]" + - s.substring(s.indexOf("test-db/working/") + "test-db/working/".length() + 16, s.length()) - or - result = s and - not exists(s.indexOf("test-db/working/")) - ) -} - -from Assembly a -select getPath(a) diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget with_space/Assemblies.expected b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget with_space/Assemblies.expected deleted file mode 100644 index bf3b256b71f..00000000000 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget with_space/Assemblies.expected +++ /dev/null @@ -1 +0,0 @@ -| [...]/Newtonsoft.Json.6.0.4/lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll | diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget with_space/Assemblies.ql b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget with_space/Assemblies.ql deleted file mode 100644 index 24308907aa3..00000000000 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget with_space/Assemblies.ql +++ /dev/null @@ -1,15 +0,0 @@ -import csharp - -private string getPath(Assembly a) { - not a.getCompilation().getOutputAssembly() = a and - exists(string s | s = a.getFile().getAbsolutePath() | - result = - "[...]" + - s.substring(s.indexOf("test-db/working/") + "test-db/working/".length() + 16 + - "/legacypackages".length(), s.length()) - // TODO: include all other assemblies from the test results. Initially disable because mono installations were problematic on ARM runners. - ) -} - -from Assembly a -select getPath(a) diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget/Assemblies.expected b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget/Assemblies.expected deleted file mode 100644 index bf3b256b71f..00000000000 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget/Assemblies.expected +++ /dev/null @@ -1 +0,0 @@ -| [...]/Newtonsoft.Json.6.0.4/lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll | diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget/Assemblies.ql b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget/Assemblies.ql deleted file mode 100644 index 24308907aa3..00000000000 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget/Assemblies.ql +++ /dev/null @@ -1,15 +0,0 @@ -import csharp - -private string getPath(Assembly a) { - not a.getCompilation().getOutputAssembly() = a and - exists(string s | s = a.getFile().getAbsolutePath() | - result = - "[...]" + - s.substring(s.indexOf("test-db/working/") + "test-db/working/".length() + 16 + - "/legacypackages".length(), s.length()) - // TODO: include all other assemblies from the test results. Initially disable because mono installations were problematic on ARM runners. - ) -} - -from Assembly a -select getPath(a) diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/Assemblies.expected b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/Assemblies.expected deleted file mode 100644 index 2a530060edb..00000000000 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/Assemblies.expected +++ /dev/null @@ -1 +0,0 @@ -| [...]/newtonsoft.json/13.0.3/lib/net6.0/Newtonsoft.Json.dll | diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/Assemblies.ql b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/Assemblies.ql deleted file mode 100644 index 79cf92de791..00000000000 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error/Assemblies.ql +++ /dev/null @@ -1,11 +0,0 @@ -import csharp - -private string getPath(Assembly a) { - not a.getCompilation().getOutputAssembly() = a and - exists(string s | s = a.getFile().getAbsolutePath() | - result = "[...]/" + s.substring(s.indexOf("newtonsoft.json"), s.length()) - ) -} - -from Assembly a -select getPath(a) diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/Assemblies.expected b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/Assemblies.expected deleted file mode 100644 index 2a530060edb..00000000000 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/Assemblies.expected +++ /dev/null @@ -1 +0,0 @@ -| [...]/newtonsoft.json/13.0.3/lib/net6.0/Newtonsoft.Json.dll | diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/Assemblies.ql b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/Assemblies.ql deleted file mode 100644 index 79cf92de791..00000000000 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_error_timeout/Assemblies.ql +++ /dev/null @@ -1,11 +0,0 @@ -import csharp - -private string getPath(Assembly a) { - not a.getCompilation().getOutputAssembly() = a and - exists(string s | s = a.getFile().getAbsolutePath() | - result = "[...]/" + s.substring(s.indexOf("newtonsoft.json"), s.length()) - ) -} - -from Assembly a -select getPath(a) diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_fallback/Assemblies.expected b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_fallback/Assemblies.expected deleted file mode 100644 index 2a530060edb..00000000000 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_fallback/Assemblies.expected +++ /dev/null @@ -1 +0,0 @@ -| [...]/newtonsoft.json/13.0.3/lib/net6.0/Newtonsoft.Json.dll | diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_fallback/Assemblies.ql b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_fallback/Assemblies.ql deleted file mode 100644 index 79cf92de791..00000000000 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_config_fallback/Assemblies.ql +++ /dev/null @@ -1,11 +0,0 @@ -import csharp - -private string getPath(Assembly a) { - not a.getCompilation().getOutputAssembly() = a and - exists(string s | s = a.getFile().getAbsolutePath() | - result = "[...]/" + s.substring(s.indexOf("newtonsoft.json"), s.length()) - ) -} - -from Assembly a -select getPath(a) diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/Assemblies.expected b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/Assemblies.expected deleted file mode 100644 index bf3b256b71f..00000000000 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/Assemblies.expected +++ /dev/null @@ -1 +0,0 @@ -| [...]/Newtonsoft.Json.6.0.4/lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll | diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/Assemblies.ql b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/Assemblies.ql deleted file mode 100644 index 24308907aa3..00000000000 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_no_sources/Assemblies.ql +++ /dev/null @@ -1,15 +0,0 @@ -import csharp - -private string getPath(Assembly a) { - not a.getCompilation().getOutputAssembly() = a and - exists(string s | s = a.getFile().getAbsolutePath() | - result = - "[...]" + - s.substring(s.indexOf("test-db/working/") + "test-db/working/".length() + 16 + - "/legacypackages".length(), s.length()) - // TODO: include all other assemblies from the test results. Initially disable because mono installations were problematic on ARM runners. - ) -} - -from Assembly a -select getPath(a) diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_versions/Assemblies.expected b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_versions/Assemblies.expected deleted file mode 100644 index 987ec7c8d44..00000000000 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_versions/Assemblies.expected +++ /dev/null @@ -1 +0,0 @@ -| [...]/newtonsoft.json/13.0.1/lib/netstandard2.0/Newtonsoft.Json.dll | diff --git a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_versions/Assemblies.ql b/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_versions/Assemblies.ql deleted file mode 100644 index cf7f8ef50fe..00000000000 --- a/csharp/ql/integration-tests/posix-only/standalone_dependencies_nuget_versions/Assemblies.ql +++ /dev/null @@ -1,18 +0,0 @@ -import csharp - -private string getPath(Assembly a) { - not a.getCompilation().getOutputAssembly() = a and - exists(string s | s = a.getFile().getAbsolutePath() | - exists(result.indexOf("Newtonsoft.Json")) and - result = - "[...]" + - s.substring(s.indexOf("test-db/working/") + "test-db/working/".length() + 16 + - "/packages".length(), s.length()) - or - result = s and - not exists(s.indexOf("test-db/working/")) - ) -} - -from Assembly a -select getPath(a) 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/standalone_dependencies/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies/Assemblies.expected new file mode 100644 index 00000000000..d1602665e16 --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies/Assemblies.expected @@ -0,0 +1,166 @@ +| test-db/working/packages/avalara.avatax/23.11.0/lib/netstandard2.0/Avalara.AvaTax.RestClient.dll:0:0:0:0 | Avalara.AvaTax.RestClient, Version=0.0.0.0, Culture=neutral, PublicKeyToken=be94eb8ba37fd33c | +| test-db/working/packages/microsoft.bcl.asyncinterfaces/8.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll:0:0:0:0 | Microsoft.Bcl.AsyncInterfaces, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.CSharp.dll:0:0:0:0 | Microsoft.CSharp, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.VisualBasic.Core.dll:0:0:0:0 | Microsoft.VisualBasic.Core, Version=13.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.VisualBasic.dll:0:0:0:0 | Microsoft.VisualBasic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.Win32.Primitives.dll:0:0:0:0 | Microsoft.Win32.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.Win32.Registry.dll:0:0:0:0 | Microsoft.Win32.Registry, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.AppContext.dll:0:0:0:0 | System.AppContext, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Buffers.dll:0:0:0:0 | System.Buffers, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.Concurrent.dll:0:0:0:0 | System.Collections.Concurrent, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.Immutable.dll:0:0:0:0 | System.Collections.Immutable, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.NonGeneric.dll:0:0:0:0 | System.Collections.NonGeneric, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.Specialized.dll:0:0:0:0 | System.Collections.Specialized, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.dll:0:0:0:0 | System.Collections, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.Annotations.dll:0:0:0:0 | System.ComponentModel.Annotations, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.DataAnnotations.dll:0:0:0:0 | System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.EventBasedAsync.dll:0:0:0:0 | System.ComponentModel.EventBasedAsync, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.Primitives.dll:0:0:0:0 | System.ComponentModel.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.TypeConverter.dll:0:0:0:0 | System.ComponentModel.TypeConverter, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.dll:0:0:0:0 | System.ComponentModel, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Configuration.dll:0:0:0:0 | System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Console.dll:0:0:0:0 | System.Console, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Core.dll:0:0:0:0 | System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Data.Common.dll:0:0:0:0 | System.Data.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Data.DataSetExtensions.dll:0:0:0:0 | System.Data.DataSetExtensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Data.dll:0:0:0:0 | System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Contracts.dll:0:0:0:0 | System.Diagnostics.Contracts, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Debug.dll:0:0:0:0 | System.Diagnostics.Debug, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.DiagnosticSource.dll:0:0:0:0 | System.Diagnostics.DiagnosticSource, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.FileVersionInfo.dll:0:0:0:0 | System.Diagnostics.FileVersionInfo, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Process.dll:0:0:0:0 | System.Diagnostics.Process, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.StackTrace.dll:0:0:0:0 | System.Diagnostics.StackTrace, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.TextWriterTraceListener.dll:0:0:0:0 | System.Diagnostics.TextWriterTraceListener, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Tools.dll:0:0:0:0 | System.Diagnostics.Tools, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.TraceSource.dll:0:0:0:0 | System.Diagnostics.TraceSource, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Tracing.dll:0:0:0:0 | System.Diagnostics.Tracing, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Drawing.Primitives.dll:0:0:0:0 | System.Drawing.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Drawing.dll:0:0:0:0 | System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Dynamic.Runtime.dll:0:0:0:0 | System.Dynamic.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Formats.Asn1.dll:0:0:0:0 | System.Formats.Asn1, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Formats.Tar.dll:0:0:0:0 | System.Formats.Tar, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Globalization.Calendars.dll:0:0:0:0 | System.Globalization.Calendars, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Globalization.Extensions.dll:0:0:0:0 | System.Globalization.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Globalization.dll:0:0:0:0 | System.Globalization, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.Brotli.dll:0:0:0:0 | System.IO.Compression.Brotli, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.FileSystem.dll:0:0:0:0 | System.IO.Compression.FileSystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.ZipFile.dll:0:0:0:0 | System.IO.Compression.ZipFile, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.dll:0:0:0:0 | System.IO.Compression, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.AccessControl.dll:0:0:0:0 | System.IO.FileSystem.AccessControl, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.DriveInfo.dll:0:0:0:0 | System.IO.FileSystem.DriveInfo, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.Primitives.dll:0:0:0:0 | System.IO.FileSystem.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.Watcher.dll:0:0:0:0 | System.IO.FileSystem.Watcher, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.dll:0:0:0:0 | System.IO.FileSystem, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.IsolatedStorage.dll:0:0:0:0 | System.IO.IsolatedStorage, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.MemoryMappedFiles.dll:0:0:0:0 | System.IO.MemoryMappedFiles, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Pipes.AccessControl.dll:0:0:0:0 | System.IO.Pipes.AccessControl, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Pipes.dll:0:0:0:0 | System.IO.Pipes, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.UnmanagedMemoryStream.dll:0:0:0:0 | System.IO.UnmanagedMemoryStream, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.dll:0:0:0:0 | System.IO, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.Expressions.dll:0:0:0:0 | System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.Parallel.dll:0:0:0:0 | System.Linq.Parallel, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.Queryable.dll:0:0:0:0 | System.Linq.Queryable, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.dll:0:0:0:0 | System.Linq, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Memory.dll:0:0:0:0 | System.Memory, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Http.Json.dll:0:0:0:0 | System.Net.Http.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Http.dll:0:0:0:0 | System.Net.Http, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.HttpListener.dll:0:0:0:0 | System.Net.HttpListener, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Mail.dll:0:0:0:0 | System.Net.Mail, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.NameResolution.dll:0:0:0:0 | System.Net.NameResolution, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.NetworkInformation.dll:0:0:0:0 | System.Net.NetworkInformation, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Ping.dll:0:0:0:0 | System.Net.Ping, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Primitives.dll:0:0:0:0 | System.Net.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Quic.dll:0:0:0:0 | System.Net.Quic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Requests.dll:0:0:0:0 | System.Net.Requests, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Security.dll:0:0:0:0 | System.Net.Security, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.ServicePoint.dll:0:0:0:0 | System.Net.ServicePoint, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Sockets.dll:0:0:0:0 | System.Net.Sockets, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebClient.dll:0:0:0:0 | System.Net.WebClient, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebHeaderCollection.dll:0:0:0:0 | System.Net.WebHeaderCollection, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebProxy.dll:0:0:0:0 | System.Net.WebProxy, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebSockets.Client.dll:0:0:0:0 | System.Net.WebSockets.Client, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebSockets.dll:0:0:0:0 | System.Net.WebSockets, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.dll:0:0:0:0 | System.Net, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Numerics.Vectors.dll:0:0:0:0 | System.Numerics.Vectors, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Numerics.dll:0:0:0:0 | System.Numerics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ObjectModel.dll:0:0:0:0 | System.ObjectModel, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.DispatchProxy.dll:0:0:0:0 | System.Reflection.DispatchProxy, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Emit.ILGeneration.dll:0:0:0:0 | System.Reflection.Emit.ILGeneration, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Emit.Lightweight.dll:0:0:0:0 | System.Reflection.Emit.Lightweight, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Emit.dll:0:0:0:0 | System.Reflection.Emit, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Extensions.dll:0:0:0:0 | System.Reflection.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Metadata.dll:0:0:0:0 | System.Reflection.Metadata, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Primitives.dll:0:0:0:0 | System.Reflection.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.TypeExtensions.dll:0:0:0:0 | System.Reflection.TypeExtensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.dll:0:0:0:0 | System.Reflection, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Resources.Reader.dll:0:0:0:0 | System.Resources.Reader, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Resources.ResourceManager.dll:0:0:0:0 | System.Resources.ResourceManager, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Resources.Writer.dll:0:0:0:0 | System.Resources.Writer, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.CompilerServices.Unsafe.dll:0:0:0:0 | System.Runtime.CompilerServices.Unsafe, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.CompilerServices.VisualC.dll:0:0:0:0 | System.Runtime.CompilerServices.VisualC, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Extensions.dll:0:0:0:0 | System.Runtime.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Handles.dll:0:0:0:0 | System.Runtime.Handles, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.InteropServices.JavaScript.dll:0:0:0:0 | System.Runtime.InteropServices.JavaScript, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.InteropServices.RuntimeInformation.dll:0:0:0:0 | System.Runtime.InteropServices.RuntimeInformation, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.InteropServices.dll:0:0:0:0 | System.Runtime.InteropServices, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Intrinsics.dll:0:0:0:0 | System.Runtime.Intrinsics, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Loader.dll:0:0:0:0 | System.Runtime.Loader, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Numerics.dll:0:0:0:0 | System.Runtime.Numerics, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Formatters.dll:0:0:0:0 | System.Runtime.Serialization.Formatters, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Json.dll:0:0:0:0 | System.Runtime.Serialization.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Primitives.dll:0:0:0:0 | System.Runtime.Serialization.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Xml.dll:0:0:0:0 | System.Runtime.Serialization.Xml, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.dll:0:0:0:0 | System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.dll:0:0:0:0 | System.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.AccessControl.dll:0:0:0:0 | System.Security.AccessControl, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Claims.dll:0:0:0:0 | System.Security.Claims, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Algorithms.dll:0:0:0:0 | System.Security.Cryptography.Algorithms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Cng.dll:0:0:0:0 | System.Security.Cryptography.Cng, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Csp.dll:0:0:0:0 | System.Security.Cryptography.Csp, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Encoding.dll:0:0:0:0 | System.Security.Cryptography.Encoding, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.OpenSsl.dll:0:0:0:0 | System.Security.Cryptography.OpenSsl, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Primitives.dll:0:0:0:0 | System.Security.Cryptography.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.X509Certificates.dll:0:0:0:0 | System.Security.Cryptography.X509Certificates, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.dll:0:0:0:0 | System.Security.Cryptography, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Principal.Windows.dll:0:0:0:0 | System.Security.Principal.Windows, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Principal.dll:0:0:0:0 | System.Security.Principal, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.SecureString.dll:0:0:0:0 | System.Security.SecureString, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.dll:0:0:0:0 | System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ServiceModel.Web.dll:0:0:0:0 | System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ServiceProcess.dll:0:0:0:0 | System.ServiceProcess, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encoding.CodePages.dll:0:0:0:0 | System.Text.Encoding.CodePages, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encoding.Extensions.dll:0:0:0:0 | System.Text.Encoding.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encoding.dll:0:0:0:0 | System.Text.Encoding, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encodings.Web.dll:0:0:0:0 | System.Text.Encodings.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Json.dll:0:0:0:0 | System.Text.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.RegularExpressions.dll:0:0:0:0 | System.Text.RegularExpressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Channels.dll:0:0:0:0 | System.Threading.Channels, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Overlapped.dll:0:0:0:0 | System.Threading.Overlapped, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.Dataflow.dll:0:0:0:0 | System.Threading.Tasks.Dataflow, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.Extensions.dll:0:0:0:0 | System.Threading.Tasks.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.Parallel.dll:0:0:0:0 | System.Threading.Tasks.Parallel, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.dll:0:0:0:0 | System.Threading.Tasks, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Thread.dll:0:0:0:0 | System.Threading.Thread, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.ThreadPool.dll:0:0:0:0 | System.Threading.ThreadPool, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Timer.dll:0:0:0:0 | System.Threading.Timer, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.dll:0:0:0:0 | System.Threading, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Transactions.Local.dll:0:0:0:0 | System.Transactions.Local, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Transactions.dll:0:0:0:0 | System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ValueTuple.dll:0:0:0:0 | System.ValueTuple, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Web.HttpUtility.dll:0:0:0:0 | System.Web.HttpUtility, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Web.dll:0:0:0:0 | System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Windows.dll:0:0:0:0 | System.Windows, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.Linq.dll:0:0:0:0 | System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.ReaderWriter.dll:0:0:0:0 | System.Xml.ReaderWriter, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.Serialization.dll:0:0:0:0 | System.Xml.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XDocument.dll:0:0:0:0 | System.Xml.XDocument, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XPath.XDocument.dll:0:0:0:0 | System.Xml.XPath.XDocument, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XPath.dll:0:0:0:0 | System.Xml.XPath, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XmlDocument.dll:0:0:0:0 | System.Xml.XmlDocument, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XmlSerializer.dll:0:0:0:0 | System.Xml.XmlSerializer, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.dll:0:0:0:0 | System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.dll:0:0:0:0 | System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/WindowsBase.dll:0:0:0:0 | WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/mscorlib.dll:0:0:0:0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/netstandard.dll:0:0:0:0 | netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/newtonsoft.json/12.0.1/lib/netstandard2.0/Newtonsoft.Json.dll:0:0:0:0 | Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed | diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies/Assemblies.ql b/csharp/ql/integration-tests/posix/standalone_dependencies/Assemblies.ql new file mode 100644 index 00000000000..931e64d87ba --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies/Assemblies.ql @@ -0,0 +1,5 @@ +import csharp + +from Assembly a +where not a.getCompilation().getOutputAssembly() = a +select a 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/standalone_dependencies_executing_runtime/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_executing_runtime/Assemblies.expected new file mode 100644 index 00000000000..18cbc068ace --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_executing_runtime/Assemblies.expected @@ -0,0 +1,200 @@ +| [...]/csharp/tools/[...]/Basic.CompilerLog.Util.dll | +| [...]/csharp/tools/[...]/Humanizer.dll | +| [...]/csharp/tools/[...]/MessagePack.Annotations.dll | +| [...]/csharp/tools/[...]/MessagePack.dll | +| [...]/csharp/tools/[...]/Microsoft.Build.Framework.dll | +| [...]/csharp/tools/[...]/Microsoft.Build.Utilities.Core.dll | +| [...]/csharp/tools/[...]/Microsoft.Build.dll | +| [...]/csharp/tools/[...]/Microsoft.CSharp.dll | +| [...]/csharp/tools/[...]/Microsoft.CodeAnalysis.CSharp.Workspaces.dll | +| [...]/csharp/tools/[...]/Microsoft.CodeAnalysis.CSharp.dll | +| [...]/csharp/tools/[...]/Microsoft.CodeAnalysis.VisualBasic.Workspaces.dll | +| [...]/csharp/tools/[...]/Microsoft.CodeAnalysis.VisualBasic.dll | +| [...]/csharp/tools/[...]/Microsoft.CodeAnalysis.Workspaces.dll | +| [...]/csharp/tools/[...]/Microsoft.CodeAnalysis.dll | +| [...]/csharp/tools/[...]/Microsoft.Extensions.ObjectPool.dll | +| [...]/csharp/tools/[...]/Microsoft.NET.StringTools.dll | +| [...]/csharp/tools/[...]/Microsoft.VisualBasic.Core.dll | +| [...]/csharp/tools/[...]/Microsoft.VisualBasic.dll | +| [...]/csharp/tools/[...]/Microsoft.Win32.Primitives.dll | +| [...]/csharp/tools/[...]/Microsoft.Win32.Registry.dll | +| [...]/csharp/tools/[...]/Microsoft.Win32.SystemEvents.dll | +| [...]/csharp/tools/[...]/Mono.Posix.NETStandard.dll | +| [...]/csharp/tools/[...]/Newtonsoft.Json.dll | +| [...]/csharp/tools/[...]/StructuredLogger.dll | +| [...]/csharp/tools/[...]/System.AppContext.dll | +| [...]/csharp/tools/[...]/System.Buffers.dll | +| [...]/csharp/tools/[...]/System.Collections.Concurrent.dll | +| [...]/csharp/tools/[...]/System.Collections.Immutable.dll | +| [...]/csharp/tools/[...]/System.Collections.NonGeneric.dll | +| [...]/csharp/tools/[...]/System.Collections.Specialized.dll | +| [...]/csharp/tools/[...]/System.Collections.dll | +| [...]/csharp/tools/[...]/System.ComponentModel.Annotations.dll | +| [...]/csharp/tools/[...]/System.ComponentModel.DataAnnotations.dll | +| [...]/csharp/tools/[...]/System.ComponentModel.EventBasedAsync.dll | +| [...]/csharp/tools/[...]/System.ComponentModel.Primitives.dll | +| [...]/csharp/tools/[...]/System.ComponentModel.TypeConverter.dll | +| [...]/csharp/tools/[...]/System.ComponentModel.dll | +| [...]/csharp/tools/[...]/System.Composition.AttributedModel.dll | +| [...]/csharp/tools/[...]/System.Composition.Convention.dll | +| [...]/csharp/tools/[...]/System.Composition.Hosting.dll | +| [...]/csharp/tools/[...]/System.Composition.Runtime.dll | +| [...]/csharp/tools/[...]/System.Composition.TypedParts.dll | +| [...]/csharp/tools/[...]/System.Configuration.ConfigurationManager.dll | +| [...]/csharp/tools/[...]/System.Configuration.dll | +| [...]/csharp/tools/[...]/System.Console.dll | +| [...]/csharp/tools/[...]/System.Core.dll | +| [...]/csharp/tools/[...]/System.Data.Common.dll | +| [...]/csharp/tools/[...]/System.Data.DataSetExtensions.dll | +| [...]/csharp/tools/[...]/System.Data.dll | +| [...]/csharp/tools/[...]/System.Diagnostics.Contracts.dll | +| [...]/csharp/tools/[...]/System.Diagnostics.Debug.dll | +| [...]/csharp/tools/[...]/System.Diagnostics.DiagnosticSource.dll | +| [...]/csharp/tools/[...]/System.Diagnostics.EventLog.dll | +| [...]/csharp/tools/[...]/System.Diagnostics.FileVersionInfo.dll | +| [...]/csharp/tools/[...]/System.Diagnostics.Process.dll | +| [...]/csharp/tools/[...]/System.Diagnostics.StackTrace.dll | +| [...]/csharp/tools/[...]/System.Diagnostics.TextWriterTraceListener.dll | +| [...]/csharp/tools/[...]/System.Diagnostics.Tools.dll | +| [...]/csharp/tools/[...]/System.Diagnostics.TraceSource.dll | +| [...]/csharp/tools/[...]/System.Diagnostics.Tracing.dll | +| [...]/csharp/tools/[...]/System.Drawing.Common.dll | +| [...]/csharp/tools/[...]/System.Drawing.Primitives.dll | +| [...]/csharp/tools/[...]/System.Drawing.dll | +| [...]/csharp/tools/[...]/System.Dynamic.Runtime.dll | +| [...]/csharp/tools/[...]/System.Formats.Asn1.dll | +| [...]/csharp/tools/[...]/System.Formats.Tar.dll | +| [...]/csharp/tools/[...]/System.Globalization.Calendars.dll | +| [...]/csharp/tools/[...]/System.Globalization.Extensions.dll | +| [...]/csharp/tools/[...]/System.Globalization.dll | +| [...]/csharp/tools/[...]/System.IO.Compression.Brotli.dll | +| [...]/csharp/tools/[...]/System.IO.Compression.FileSystem.dll | +| [...]/csharp/tools/[...]/System.IO.Compression.ZipFile.dll | +| [...]/csharp/tools/[...]/System.IO.Compression.dll | +| [...]/csharp/tools/[...]/System.IO.FileSystem.AccessControl.dll | +| [...]/csharp/tools/[...]/System.IO.FileSystem.DriveInfo.dll | +| [...]/csharp/tools/[...]/System.IO.FileSystem.Primitives.dll | +| [...]/csharp/tools/[...]/System.IO.FileSystem.Watcher.dll | +| [...]/csharp/tools/[...]/System.IO.FileSystem.dll | +| [...]/csharp/tools/[...]/System.IO.IsolatedStorage.dll | +| [...]/csharp/tools/[...]/System.IO.MemoryMappedFiles.dll | +| [...]/csharp/tools/[...]/System.IO.Pipelines.dll | +| [...]/csharp/tools/[...]/System.IO.Pipes.AccessControl.dll | +| [...]/csharp/tools/[...]/System.IO.Pipes.dll | +| [...]/csharp/tools/[...]/System.IO.UnmanagedMemoryStream.dll | +| [...]/csharp/tools/[...]/System.IO.dll | +| [...]/csharp/tools/[...]/System.Linq.Expressions.dll | +| [...]/csharp/tools/[...]/System.Linq.Parallel.dll | +| [...]/csharp/tools/[...]/System.Linq.Queryable.dll | +| [...]/csharp/tools/[...]/System.Linq.dll | +| [...]/csharp/tools/[...]/System.Memory.dll | +| [...]/csharp/tools/[...]/System.Net.Http.Json.dll | +| [...]/csharp/tools/[...]/System.Net.Http.dll | +| [...]/csharp/tools/[...]/System.Net.HttpListener.dll | +| [...]/csharp/tools/[...]/System.Net.Mail.dll | +| [...]/csharp/tools/[...]/System.Net.NameResolution.dll | +| [...]/csharp/tools/[...]/System.Net.NetworkInformation.dll | +| [...]/csharp/tools/[...]/System.Net.Ping.dll | +| [...]/csharp/tools/[...]/System.Net.Primitives.dll | +| [...]/csharp/tools/[...]/System.Net.Quic.dll | +| [...]/csharp/tools/[...]/System.Net.Requests.dll | +| [...]/csharp/tools/[...]/System.Net.Security.dll | +| [...]/csharp/tools/[...]/System.Net.ServicePoint.dll | +| [...]/csharp/tools/[...]/System.Net.Sockets.dll | +| [...]/csharp/tools/[...]/System.Net.WebClient.dll | +| [...]/csharp/tools/[...]/System.Net.WebHeaderCollection.dll | +| [...]/csharp/tools/[...]/System.Net.WebProxy.dll | +| [...]/csharp/tools/[...]/System.Net.WebSockets.Client.dll | +| [...]/csharp/tools/[...]/System.Net.WebSockets.dll | +| [...]/csharp/tools/[...]/System.Net.dll | +| [...]/csharp/tools/[...]/System.Numerics.Vectors.dll | +| [...]/csharp/tools/[...]/System.Numerics.dll | +| [...]/csharp/tools/[...]/System.ObjectModel.dll | +| [...]/csharp/tools/[...]/System.Private.CoreLib.dll | +| [...]/csharp/tools/[...]/System.Private.DataContractSerialization.dll | +| [...]/csharp/tools/[...]/System.Private.Uri.dll | +| [...]/csharp/tools/[...]/System.Private.Xml.Linq.dll | +| [...]/csharp/tools/[...]/System.Private.Xml.dll | +| [...]/csharp/tools/[...]/System.Reflection.DispatchProxy.dll | +| [...]/csharp/tools/[...]/System.Reflection.Emit.ILGeneration.dll | +| [...]/csharp/tools/[...]/System.Reflection.Emit.Lightweight.dll | +| [...]/csharp/tools/[...]/System.Reflection.Emit.dll | +| [...]/csharp/tools/[...]/System.Reflection.Extensions.dll | +| [...]/csharp/tools/[...]/System.Reflection.Metadata.dll | +| [...]/csharp/tools/[...]/System.Reflection.MetadataLoadContext.dll | +| [...]/csharp/tools/[...]/System.Reflection.Primitives.dll | +| [...]/csharp/tools/[...]/System.Reflection.TypeExtensions.dll | +| [...]/csharp/tools/[...]/System.Reflection.dll | +| [...]/csharp/tools/[...]/System.Resources.Reader.dll | +| [...]/csharp/tools/[...]/System.Resources.ResourceManager.dll | +| [...]/csharp/tools/[...]/System.Resources.Writer.dll | +| [...]/csharp/tools/[...]/System.Runtime.CompilerServices.Unsafe.dll | +| [...]/csharp/tools/[...]/System.Runtime.CompilerServices.VisualC.dll | +| [...]/csharp/tools/[...]/System.Runtime.Extensions.dll | +| [...]/csharp/tools/[...]/System.Runtime.Handles.dll | +| [...]/csharp/tools/[...]/System.Runtime.InteropServices.JavaScript.dll | +| [...]/csharp/tools/[...]/System.Runtime.InteropServices.RuntimeInformation.dll | +| [...]/csharp/tools/[...]/System.Runtime.InteropServices.dll | +| [...]/csharp/tools/[...]/System.Runtime.Intrinsics.dll | +| [...]/csharp/tools/[...]/System.Runtime.Loader.dll | +| [...]/csharp/tools/[...]/System.Runtime.Numerics.dll | +| [...]/csharp/tools/[...]/System.Runtime.Serialization.Formatters.dll | +| [...]/csharp/tools/[...]/System.Runtime.Serialization.Json.dll | +| [...]/csharp/tools/[...]/System.Runtime.Serialization.Primitives.dll | +| [...]/csharp/tools/[...]/System.Runtime.Serialization.Xml.dll | +| [...]/csharp/tools/[...]/System.Runtime.Serialization.dll | +| [...]/csharp/tools/[...]/System.Runtime.dll | +| [...]/csharp/tools/[...]/System.Security.AccessControl.dll | +| [...]/csharp/tools/[...]/System.Security.Claims.dll | +| [...]/csharp/tools/[...]/System.Security.Cryptography.Algorithms.dll | +| [...]/csharp/tools/[...]/System.Security.Cryptography.Cng.dll | +| [...]/csharp/tools/[...]/System.Security.Cryptography.Csp.dll | +| [...]/csharp/tools/[...]/System.Security.Cryptography.Encoding.dll | +| [...]/csharp/tools/[...]/System.Security.Cryptography.OpenSsl.dll | +| [...]/csharp/tools/[...]/System.Security.Cryptography.Primitives.dll | +| [...]/csharp/tools/[...]/System.Security.Cryptography.ProtectedData.dll | +| [...]/csharp/tools/[...]/System.Security.Cryptography.X509Certificates.dll | +| [...]/csharp/tools/[...]/System.Security.Cryptography.dll | +| [...]/csharp/tools/[...]/System.Security.Permissions.dll | +| [...]/csharp/tools/[...]/System.Security.Principal.Windows.dll | +| [...]/csharp/tools/[...]/System.Security.Principal.dll | +| [...]/csharp/tools/[...]/System.Security.SecureString.dll | +| [...]/csharp/tools/[...]/System.Security.dll | +| [...]/csharp/tools/[...]/System.ServiceModel.Web.dll | +| [...]/csharp/tools/[...]/System.ServiceProcess.dll | +| [...]/csharp/tools/[...]/System.Text.Encoding.CodePages.dll | +| [...]/csharp/tools/[...]/System.Text.Encoding.Extensions.dll | +| [...]/csharp/tools/[...]/System.Text.Encoding.dll | +| [...]/csharp/tools/[...]/System.Text.Encodings.Web.dll | +| [...]/csharp/tools/[...]/System.Text.Json.dll | +| [...]/csharp/tools/[...]/System.Text.RegularExpressions.dll | +| [...]/csharp/tools/[...]/System.Threading.Channels.dll | +| [...]/csharp/tools/[...]/System.Threading.Overlapped.dll | +| [...]/csharp/tools/[...]/System.Threading.Tasks.Dataflow.dll | +| [...]/csharp/tools/[...]/System.Threading.Tasks.Extensions.dll | +| [...]/csharp/tools/[...]/System.Threading.Tasks.Parallel.dll | +| [...]/csharp/tools/[...]/System.Threading.Tasks.dll | +| [...]/csharp/tools/[...]/System.Threading.Thread.dll | +| [...]/csharp/tools/[...]/System.Threading.ThreadPool.dll | +| [...]/csharp/tools/[...]/System.Threading.Timer.dll | +| [...]/csharp/tools/[...]/System.Threading.dll | +| [...]/csharp/tools/[...]/System.Transactions.Local.dll | +| [...]/csharp/tools/[...]/System.Transactions.dll | +| [...]/csharp/tools/[...]/System.ValueTuple.dll | +| [...]/csharp/tools/[...]/System.Web.HttpUtility.dll | +| [...]/csharp/tools/[...]/System.Web.dll | +| [...]/csharp/tools/[...]/System.Windows.Extensions.dll | +| [...]/csharp/tools/[...]/System.Windows.dll | +| [...]/csharp/tools/[...]/System.Xml.Linq.dll | +| [...]/csharp/tools/[...]/System.Xml.ReaderWriter.dll | +| [...]/csharp/tools/[...]/System.Xml.Serialization.dll | +| [...]/csharp/tools/[...]/System.Xml.XDocument.dll | +| [...]/csharp/tools/[...]/System.Xml.XPath.XDocument.dll | +| [...]/csharp/tools/[...]/System.Xml.XPath.dll | +| [...]/csharp/tools/[...]/System.Xml.XmlDocument.dll | +| [...]/csharp/tools/[...]/System.Xml.XmlSerializer.dll | +| [...]/csharp/tools/[...]/System.Xml.dll | +| [...]/csharp/tools/[...]/System.dll | +| [...]/csharp/tools/[...]/WindowsBase.dll | +| [...]/csharp/tools/[...]/mscorlib.dll | +| [...]/csharp/tools/[...]/netstandard.dll | 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 59% 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 index 3bb648c579a..b5634fb7b96 100644 --- 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 @@ -3,13 +3,8 @@ import csharp private string getPath(Assembly a) { not a.getCompilation().getOutputAssembly() = a and exists(string s | s = a.getFile().getAbsolutePath() | - result = - "[...]" + - s.substring(s.indexOf("test-db/working/") + "test-db/working/".length() + 16 + - "/packages".length(), s.length()) - or exists(string sub | sub = "csharp/tools/" + ["osx64", "linux64"] | - result = "[...]" + s.substring(s.indexOf(sub) + sub.length(), s.length()) + result = "[...]/csharp/tools/[...]" + s.substring(s.indexOf(sub) + sub.length(), s.length()) ) or result = s and 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/standalone_dependencies_multi_project/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_project/Assemblies.expected new file mode 100644 index 00000000000..d1602665e16 --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_project/Assemblies.expected @@ -0,0 +1,166 @@ +| test-db/working/packages/avalara.avatax/23.11.0/lib/netstandard2.0/Avalara.AvaTax.RestClient.dll:0:0:0:0 | Avalara.AvaTax.RestClient, Version=0.0.0.0, Culture=neutral, PublicKeyToken=be94eb8ba37fd33c | +| test-db/working/packages/microsoft.bcl.asyncinterfaces/8.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll:0:0:0:0 | Microsoft.Bcl.AsyncInterfaces, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.CSharp.dll:0:0:0:0 | Microsoft.CSharp, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.VisualBasic.Core.dll:0:0:0:0 | Microsoft.VisualBasic.Core, Version=13.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.VisualBasic.dll:0:0:0:0 | Microsoft.VisualBasic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.Win32.Primitives.dll:0:0:0:0 | Microsoft.Win32.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.Win32.Registry.dll:0:0:0:0 | Microsoft.Win32.Registry, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.AppContext.dll:0:0:0:0 | System.AppContext, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Buffers.dll:0:0:0:0 | System.Buffers, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.Concurrent.dll:0:0:0:0 | System.Collections.Concurrent, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.Immutable.dll:0:0:0:0 | System.Collections.Immutable, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.NonGeneric.dll:0:0:0:0 | System.Collections.NonGeneric, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.Specialized.dll:0:0:0:0 | System.Collections.Specialized, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.dll:0:0:0:0 | System.Collections, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.Annotations.dll:0:0:0:0 | System.ComponentModel.Annotations, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.DataAnnotations.dll:0:0:0:0 | System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.EventBasedAsync.dll:0:0:0:0 | System.ComponentModel.EventBasedAsync, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.Primitives.dll:0:0:0:0 | System.ComponentModel.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.TypeConverter.dll:0:0:0:0 | System.ComponentModel.TypeConverter, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.dll:0:0:0:0 | System.ComponentModel, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Configuration.dll:0:0:0:0 | System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Console.dll:0:0:0:0 | System.Console, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Core.dll:0:0:0:0 | System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Data.Common.dll:0:0:0:0 | System.Data.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Data.DataSetExtensions.dll:0:0:0:0 | System.Data.DataSetExtensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Data.dll:0:0:0:0 | System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Contracts.dll:0:0:0:0 | System.Diagnostics.Contracts, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Debug.dll:0:0:0:0 | System.Diagnostics.Debug, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.DiagnosticSource.dll:0:0:0:0 | System.Diagnostics.DiagnosticSource, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.FileVersionInfo.dll:0:0:0:0 | System.Diagnostics.FileVersionInfo, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Process.dll:0:0:0:0 | System.Diagnostics.Process, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.StackTrace.dll:0:0:0:0 | System.Diagnostics.StackTrace, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.TextWriterTraceListener.dll:0:0:0:0 | System.Diagnostics.TextWriterTraceListener, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Tools.dll:0:0:0:0 | System.Diagnostics.Tools, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.TraceSource.dll:0:0:0:0 | System.Diagnostics.TraceSource, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Tracing.dll:0:0:0:0 | System.Diagnostics.Tracing, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Drawing.Primitives.dll:0:0:0:0 | System.Drawing.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Drawing.dll:0:0:0:0 | System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Dynamic.Runtime.dll:0:0:0:0 | System.Dynamic.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Formats.Asn1.dll:0:0:0:0 | System.Formats.Asn1, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Formats.Tar.dll:0:0:0:0 | System.Formats.Tar, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Globalization.Calendars.dll:0:0:0:0 | System.Globalization.Calendars, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Globalization.Extensions.dll:0:0:0:0 | System.Globalization.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Globalization.dll:0:0:0:0 | System.Globalization, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.Brotli.dll:0:0:0:0 | System.IO.Compression.Brotli, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.FileSystem.dll:0:0:0:0 | System.IO.Compression.FileSystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.ZipFile.dll:0:0:0:0 | System.IO.Compression.ZipFile, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.dll:0:0:0:0 | System.IO.Compression, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.AccessControl.dll:0:0:0:0 | System.IO.FileSystem.AccessControl, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.DriveInfo.dll:0:0:0:0 | System.IO.FileSystem.DriveInfo, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.Primitives.dll:0:0:0:0 | System.IO.FileSystem.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.Watcher.dll:0:0:0:0 | System.IO.FileSystem.Watcher, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.dll:0:0:0:0 | System.IO.FileSystem, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.IsolatedStorage.dll:0:0:0:0 | System.IO.IsolatedStorage, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.MemoryMappedFiles.dll:0:0:0:0 | System.IO.MemoryMappedFiles, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Pipes.AccessControl.dll:0:0:0:0 | System.IO.Pipes.AccessControl, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Pipes.dll:0:0:0:0 | System.IO.Pipes, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.UnmanagedMemoryStream.dll:0:0:0:0 | System.IO.UnmanagedMemoryStream, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.dll:0:0:0:0 | System.IO, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.Expressions.dll:0:0:0:0 | System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.Parallel.dll:0:0:0:0 | System.Linq.Parallel, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.Queryable.dll:0:0:0:0 | System.Linq.Queryable, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.dll:0:0:0:0 | System.Linq, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Memory.dll:0:0:0:0 | System.Memory, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Http.Json.dll:0:0:0:0 | System.Net.Http.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Http.dll:0:0:0:0 | System.Net.Http, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.HttpListener.dll:0:0:0:0 | System.Net.HttpListener, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Mail.dll:0:0:0:0 | System.Net.Mail, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.NameResolution.dll:0:0:0:0 | System.Net.NameResolution, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.NetworkInformation.dll:0:0:0:0 | System.Net.NetworkInformation, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Ping.dll:0:0:0:0 | System.Net.Ping, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Primitives.dll:0:0:0:0 | System.Net.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Quic.dll:0:0:0:0 | System.Net.Quic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Requests.dll:0:0:0:0 | System.Net.Requests, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Security.dll:0:0:0:0 | System.Net.Security, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.ServicePoint.dll:0:0:0:0 | System.Net.ServicePoint, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Sockets.dll:0:0:0:0 | System.Net.Sockets, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebClient.dll:0:0:0:0 | System.Net.WebClient, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebHeaderCollection.dll:0:0:0:0 | System.Net.WebHeaderCollection, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebProxy.dll:0:0:0:0 | System.Net.WebProxy, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebSockets.Client.dll:0:0:0:0 | System.Net.WebSockets.Client, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebSockets.dll:0:0:0:0 | System.Net.WebSockets, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.dll:0:0:0:0 | System.Net, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Numerics.Vectors.dll:0:0:0:0 | System.Numerics.Vectors, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Numerics.dll:0:0:0:0 | System.Numerics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ObjectModel.dll:0:0:0:0 | System.ObjectModel, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.DispatchProxy.dll:0:0:0:0 | System.Reflection.DispatchProxy, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Emit.ILGeneration.dll:0:0:0:0 | System.Reflection.Emit.ILGeneration, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Emit.Lightweight.dll:0:0:0:0 | System.Reflection.Emit.Lightweight, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Emit.dll:0:0:0:0 | System.Reflection.Emit, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Extensions.dll:0:0:0:0 | System.Reflection.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Metadata.dll:0:0:0:0 | System.Reflection.Metadata, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Primitives.dll:0:0:0:0 | System.Reflection.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.TypeExtensions.dll:0:0:0:0 | System.Reflection.TypeExtensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.dll:0:0:0:0 | System.Reflection, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Resources.Reader.dll:0:0:0:0 | System.Resources.Reader, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Resources.ResourceManager.dll:0:0:0:0 | System.Resources.ResourceManager, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Resources.Writer.dll:0:0:0:0 | System.Resources.Writer, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.CompilerServices.Unsafe.dll:0:0:0:0 | System.Runtime.CompilerServices.Unsafe, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.CompilerServices.VisualC.dll:0:0:0:0 | System.Runtime.CompilerServices.VisualC, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Extensions.dll:0:0:0:0 | System.Runtime.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Handles.dll:0:0:0:0 | System.Runtime.Handles, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.InteropServices.JavaScript.dll:0:0:0:0 | System.Runtime.InteropServices.JavaScript, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.InteropServices.RuntimeInformation.dll:0:0:0:0 | System.Runtime.InteropServices.RuntimeInformation, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.InteropServices.dll:0:0:0:0 | System.Runtime.InteropServices, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Intrinsics.dll:0:0:0:0 | System.Runtime.Intrinsics, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Loader.dll:0:0:0:0 | System.Runtime.Loader, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Numerics.dll:0:0:0:0 | System.Runtime.Numerics, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Formatters.dll:0:0:0:0 | System.Runtime.Serialization.Formatters, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Json.dll:0:0:0:0 | System.Runtime.Serialization.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Primitives.dll:0:0:0:0 | System.Runtime.Serialization.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Xml.dll:0:0:0:0 | System.Runtime.Serialization.Xml, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.dll:0:0:0:0 | System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.dll:0:0:0:0 | System.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.AccessControl.dll:0:0:0:0 | System.Security.AccessControl, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Claims.dll:0:0:0:0 | System.Security.Claims, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Algorithms.dll:0:0:0:0 | System.Security.Cryptography.Algorithms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Cng.dll:0:0:0:0 | System.Security.Cryptography.Cng, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Csp.dll:0:0:0:0 | System.Security.Cryptography.Csp, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Encoding.dll:0:0:0:0 | System.Security.Cryptography.Encoding, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.OpenSsl.dll:0:0:0:0 | System.Security.Cryptography.OpenSsl, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Primitives.dll:0:0:0:0 | System.Security.Cryptography.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.X509Certificates.dll:0:0:0:0 | System.Security.Cryptography.X509Certificates, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.dll:0:0:0:0 | System.Security.Cryptography, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Principal.Windows.dll:0:0:0:0 | System.Security.Principal.Windows, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Principal.dll:0:0:0:0 | System.Security.Principal, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.SecureString.dll:0:0:0:0 | System.Security.SecureString, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.dll:0:0:0:0 | System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ServiceModel.Web.dll:0:0:0:0 | System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ServiceProcess.dll:0:0:0:0 | System.ServiceProcess, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encoding.CodePages.dll:0:0:0:0 | System.Text.Encoding.CodePages, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encoding.Extensions.dll:0:0:0:0 | System.Text.Encoding.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encoding.dll:0:0:0:0 | System.Text.Encoding, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encodings.Web.dll:0:0:0:0 | System.Text.Encodings.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Json.dll:0:0:0:0 | System.Text.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.RegularExpressions.dll:0:0:0:0 | System.Text.RegularExpressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Channels.dll:0:0:0:0 | System.Threading.Channels, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Overlapped.dll:0:0:0:0 | System.Threading.Overlapped, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.Dataflow.dll:0:0:0:0 | System.Threading.Tasks.Dataflow, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.Extensions.dll:0:0:0:0 | System.Threading.Tasks.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.Parallel.dll:0:0:0:0 | System.Threading.Tasks.Parallel, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.dll:0:0:0:0 | System.Threading.Tasks, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Thread.dll:0:0:0:0 | System.Threading.Thread, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.ThreadPool.dll:0:0:0:0 | System.Threading.ThreadPool, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Timer.dll:0:0:0:0 | System.Threading.Timer, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.dll:0:0:0:0 | System.Threading, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Transactions.Local.dll:0:0:0:0 | System.Transactions.Local, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Transactions.dll:0:0:0:0 | System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ValueTuple.dll:0:0:0:0 | System.ValueTuple, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Web.HttpUtility.dll:0:0:0:0 | System.Web.HttpUtility, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Web.dll:0:0:0:0 | System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Windows.dll:0:0:0:0 | System.Windows, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.Linq.dll:0:0:0:0 | System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.ReaderWriter.dll:0:0:0:0 | System.Xml.ReaderWriter, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.Serialization.dll:0:0:0:0 | System.Xml.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XDocument.dll:0:0:0:0 | System.Xml.XDocument, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XPath.XDocument.dll:0:0:0:0 | System.Xml.XPath.XDocument, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XPath.dll:0:0:0:0 | System.Xml.XPath, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XmlDocument.dll:0:0:0:0 | System.Xml.XmlDocument, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XmlSerializer.dll:0:0:0:0 | System.Xml.XmlSerializer, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.dll:0:0:0:0 | System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.dll:0:0:0:0 | System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/WindowsBase.dll:0:0:0:0 | WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/mscorlib.dll:0:0:0:0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/netstandard.dll:0:0:0:0 | netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/newtonsoft.json/12.0.1/lib/netstandard2.0/Newtonsoft.Json.dll:0:0:0:0 | Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed | diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_multi_project/Assemblies.ql b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_project/Assemblies.ql new file mode 100644 index 00000000000..931e64d87ba --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_project/Assemblies.ql @@ -0,0 +1,5 @@ +import csharp + +from Assembly a +where not a.getCompilation().getOutputAssembly() = a +select a 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/standalone_dependencies_multi_target/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_target/Assemblies.expected new file mode 100644 index 00000000000..74544f88e71 --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_target/Assemblies.expected @@ -0,0 +1,163 @@ +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.CSharp.dll:0:0:0:0 | Microsoft.CSharp, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.VisualBasic.Core.dll:0:0:0:0 | Microsoft.VisualBasic.Core, Version=13.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.VisualBasic.dll:0:0:0:0 | Microsoft.VisualBasic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.Win32.Primitives.dll:0:0:0:0 | Microsoft.Win32.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.Win32.Registry.dll:0:0:0:0 | Microsoft.Win32.Registry, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.AppContext.dll:0:0:0:0 | System.AppContext, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Buffers.dll:0:0:0:0 | System.Buffers, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.Concurrent.dll:0:0:0:0 | System.Collections.Concurrent, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.Immutable.dll:0:0:0:0 | System.Collections.Immutable, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.NonGeneric.dll:0:0:0:0 | System.Collections.NonGeneric, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.Specialized.dll:0:0:0:0 | System.Collections.Specialized, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.dll:0:0:0:0 | System.Collections, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.Annotations.dll:0:0:0:0 | System.ComponentModel.Annotations, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.DataAnnotations.dll:0:0:0:0 | System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.EventBasedAsync.dll:0:0:0:0 | System.ComponentModel.EventBasedAsync, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.Primitives.dll:0:0:0:0 | System.ComponentModel.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.TypeConverter.dll:0:0:0:0 | System.ComponentModel.TypeConverter, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.dll:0:0:0:0 | System.ComponentModel, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Configuration.dll:0:0:0:0 | System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Console.dll:0:0:0:0 | System.Console, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Core.dll:0:0:0:0 | System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Data.Common.dll:0:0:0:0 | System.Data.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Data.DataSetExtensions.dll:0:0:0:0 | System.Data.DataSetExtensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Data.dll:0:0:0:0 | System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Contracts.dll:0:0:0:0 | System.Diagnostics.Contracts, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Debug.dll:0:0:0:0 | System.Diagnostics.Debug, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.DiagnosticSource.dll:0:0:0:0 | System.Diagnostics.DiagnosticSource, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.FileVersionInfo.dll:0:0:0:0 | System.Diagnostics.FileVersionInfo, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Process.dll:0:0:0:0 | System.Diagnostics.Process, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.StackTrace.dll:0:0:0:0 | System.Diagnostics.StackTrace, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.TextWriterTraceListener.dll:0:0:0:0 | System.Diagnostics.TextWriterTraceListener, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Tools.dll:0:0:0:0 | System.Diagnostics.Tools, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.TraceSource.dll:0:0:0:0 | System.Diagnostics.TraceSource, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Tracing.dll:0:0:0:0 | System.Diagnostics.Tracing, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Drawing.Primitives.dll:0:0:0:0 | System.Drawing.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Drawing.dll:0:0:0:0 | System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Dynamic.Runtime.dll:0:0:0:0 | System.Dynamic.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Formats.Asn1.dll:0:0:0:0 | System.Formats.Asn1, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Formats.Tar.dll:0:0:0:0 | System.Formats.Tar, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Globalization.Calendars.dll:0:0:0:0 | System.Globalization.Calendars, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Globalization.Extensions.dll:0:0:0:0 | System.Globalization.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Globalization.dll:0:0:0:0 | System.Globalization, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.Brotli.dll:0:0:0:0 | System.IO.Compression.Brotli, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.FileSystem.dll:0:0:0:0 | System.IO.Compression.FileSystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.ZipFile.dll:0:0:0:0 | System.IO.Compression.ZipFile, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.dll:0:0:0:0 | System.IO.Compression, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.AccessControl.dll:0:0:0:0 | System.IO.FileSystem.AccessControl, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.DriveInfo.dll:0:0:0:0 | System.IO.FileSystem.DriveInfo, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.Primitives.dll:0:0:0:0 | System.IO.FileSystem.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.Watcher.dll:0:0:0:0 | System.IO.FileSystem.Watcher, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.dll:0:0:0:0 | System.IO.FileSystem, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.IsolatedStorage.dll:0:0:0:0 | System.IO.IsolatedStorage, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.MemoryMappedFiles.dll:0:0:0:0 | System.IO.MemoryMappedFiles, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Pipes.AccessControl.dll:0:0:0:0 | System.IO.Pipes.AccessControl, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Pipes.dll:0:0:0:0 | System.IO.Pipes, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.UnmanagedMemoryStream.dll:0:0:0:0 | System.IO.UnmanagedMemoryStream, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.dll:0:0:0:0 | System.IO, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.Expressions.dll:0:0:0:0 | System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.Parallel.dll:0:0:0:0 | System.Linq.Parallel, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.Queryable.dll:0:0:0:0 | System.Linq.Queryable, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.dll:0:0:0:0 | System.Linq, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Memory.dll:0:0:0:0 | System.Memory, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Http.Json.dll:0:0:0:0 | System.Net.Http.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Http.dll:0:0:0:0 | System.Net.Http, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.HttpListener.dll:0:0:0:0 | System.Net.HttpListener, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Mail.dll:0:0:0:0 | System.Net.Mail, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.NameResolution.dll:0:0:0:0 | System.Net.NameResolution, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.NetworkInformation.dll:0:0:0:0 | System.Net.NetworkInformation, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Ping.dll:0:0:0:0 | System.Net.Ping, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Primitives.dll:0:0:0:0 | System.Net.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Quic.dll:0:0:0:0 | System.Net.Quic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Requests.dll:0:0:0:0 | System.Net.Requests, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Security.dll:0:0:0:0 | System.Net.Security, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.ServicePoint.dll:0:0:0:0 | System.Net.ServicePoint, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Sockets.dll:0:0:0:0 | System.Net.Sockets, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebClient.dll:0:0:0:0 | System.Net.WebClient, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebHeaderCollection.dll:0:0:0:0 | System.Net.WebHeaderCollection, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebProxy.dll:0:0:0:0 | System.Net.WebProxy, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebSockets.Client.dll:0:0:0:0 | System.Net.WebSockets.Client, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebSockets.dll:0:0:0:0 | System.Net.WebSockets, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.dll:0:0:0:0 | System.Net, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Numerics.Vectors.dll:0:0:0:0 | System.Numerics.Vectors, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Numerics.dll:0:0:0:0 | System.Numerics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ObjectModel.dll:0:0:0:0 | System.ObjectModel, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.DispatchProxy.dll:0:0:0:0 | System.Reflection.DispatchProxy, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Emit.ILGeneration.dll:0:0:0:0 | System.Reflection.Emit.ILGeneration, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Emit.Lightweight.dll:0:0:0:0 | System.Reflection.Emit.Lightweight, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Emit.dll:0:0:0:0 | System.Reflection.Emit, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Extensions.dll:0:0:0:0 | System.Reflection.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Metadata.dll:0:0:0:0 | System.Reflection.Metadata, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Primitives.dll:0:0:0:0 | System.Reflection.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.TypeExtensions.dll:0:0:0:0 | System.Reflection.TypeExtensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.dll:0:0:0:0 | System.Reflection, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Resources.Reader.dll:0:0:0:0 | System.Resources.Reader, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Resources.ResourceManager.dll:0:0:0:0 | System.Resources.ResourceManager, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Resources.Writer.dll:0:0:0:0 | System.Resources.Writer, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.CompilerServices.Unsafe.dll:0:0:0:0 | System.Runtime.CompilerServices.Unsafe, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.CompilerServices.VisualC.dll:0:0:0:0 | System.Runtime.CompilerServices.VisualC, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Extensions.dll:0:0:0:0 | System.Runtime.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Handles.dll:0:0:0:0 | System.Runtime.Handles, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.InteropServices.JavaScript.dll:0:0:0:0 | System.Runtime.InteropServices.JavaScript, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.InteropServices.RuntimeInformation.dll:0:0:0:0 | System.Runtime.InteropServices.RuntimeInformation, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.InteropServices.dll:0:0:0:0 | System.Runtime.InteropServices, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Intrinsics.dll:0:0:0:0 | System.Runtime.Intrinsics, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Loader.dll:0:0:0:0 | System.Runtime.Loader, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Numerics.dll:0:0:0:0 | System.Runtime.Numerics, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Formatters.dll:0:0:0:0 | System.Runtime.Serialization.Formatters, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Json.dll:0:0:0:0 | System.Runtime.Serialization.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Primitives.dll:0:0:0:0 | System.Runtime.Serialization.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Xml.dll:0:0:0:0 | System.Runtime.Serialization.Xml, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.dll:0:0:0:0 | System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.dll:0:0:0:0 | System.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.AccessControl.dll:0:0:0:0 | System.Security.AccessControl, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Claims.dll:0:0:0:0 | System.Security.Claims, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Algorithms.dll:0:0:0:0 | System.Security.Cryptography.Algorithms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Cng.dll:0:0:0:0 | System.Security.Cryptography.Cng, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Csp.dll:0:0:0:0 | System.Security.Cryptography.Csp, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Encoding.dll:0:0:0:0 | System.Security.Cryptography.Encoding, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.OpenSsl.dll:0:0:0:0 | System.Security.Cryptography.OpenSsl, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Primitives.dll:0:0:0:0 | System.Security.Cryptography.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.X509Certificates.dll:0:0:0:0 | System.Security.Cryptography.X509Certificates, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.dll:0:0:0:0 | System.Security.Cryptography, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Principal.Windows.dll:0:0:0:0 | System.Security.Principal.Windows, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Principal.dll:0:0:0:0 | System.Security.Principal, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.SecureString.dll:0:0:0:0 | System.Security.SecureString, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.dll:0:0:0:0 | System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ServiceModel.Web.dll:0:0:0:0 | System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ServiceProcess.dll:0:0:0:0 | System.ServiceProcess, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encoding.CodePages.dll:0:0:0:0 | System.Text.Encoding.CodePages, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encoding.Extensions.dll:0:0:0:0 | System.Text.Encoding.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encoding.dll:0:0:0:0 | System.Text.Encoding, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encodings.Web.dll:0:0:0:0 | System.Text.Encodings.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Json.dll:0:0:0:0 | System.Text.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.RegularExpressions.dll:0:0:0:0 | System.Text.RegularExpressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Channels.dll:0:0:0:0 | System.Threading.Channels, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Overlapped.dll:0:0:0:0 | System.Threading.Overlapped, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.Dataflow.dll:0:0:0:0 | System.Threading.Tasks.Dataflow, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.Extensions.dll:0:0:0:0 | System.Threading.Tasks.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.Parallel.dll:0:0:0:0 | System.Threading.Tasks.Parallel, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.dll:0:0:0:0 | System.Threading.Tasks, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Thread.dll:0:0:0:0 | System.Threading.Thread, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.ThreadPool.dll:0:0:0:0 | System.Threading.ThreadPool, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Timer.dll:0:0:0:0 | System.Threading.Timer, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.dll:0:0:0:0 | System.Threading, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Transactions.Local.dll:0:0:0:0 | System.Transactions.Local, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Transactions.dll:0:0:0:0 | System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ValueTuple.dll:0:0:0:0 | System.ValueTuple, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Web.HttpUtility.dll:0:0:0:0 | System.Web.HttpUtility, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Web.dll:0:0:0:0 | System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Windows.dll:0:0:0:0 | System.Windows, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.Linq.dll:0:0:0:0 | System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.ReaderWriter.dll:0:0:0:0 | System.Xml.ReaderWriter, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.Serialization.dll:0:0:0:0 | System.Xml.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XDocument.dll:0:0:0:0 | System.Xml.XDocument, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XPath.XDocument.dll:0:0:0:0 | System.Xml.XPath.XDocument, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XPath.dll:0:0:0:0 | System.Xml.XPath, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XmlDocument.dll:0:0:0:0 | System.Xml.XmlDocument, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XmlSerializer.dll:0:0:0:0 | System.Xml.XmlSerializer, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.dll:0:0:0:0 | System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.dll:0:0:0:0 | System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/WindowsBase.dll:0:0:0:0 | WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/mscorlib.dll:0:0:0:0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/netstandard.dll:0:0:0:0 | netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_multi_target/Assemblies.ql b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_target/Assemblies.ql new file mode 100644 index 00000000000..931e64d87ba --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_multi_target/Assemblies.ql @@ -0,0 +1,5 @@ +import csharp + +from Assembly a +where not a.getCompilation().getOutputAssembly() = a +select a 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/standalone_dependencies_no_framework/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_no_framework/Assemblies.expected new file mode 100644 index 00000000000..0934f8063db --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_no_framework/Assemblies.expected @@ -0,0 +1 @@ +| test-db/working/packages/newtonsoft.json/6.0.4/lib/net45/Newtonsoft.Json.dll:0:0:0:0 | Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed | diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_no_framework/Assemblies.ql b/csharp/ql/integration-tests/posix/standalone_dependencies_no_framework/Assemblies.ql new file mode 100644 index 00000000000..931e64d87ba --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_no_framework/Assemblies.ql @@ -0,0 +1,5 @@ +import csharp + +from Assembly a +where not a.getCompilation().getOutputAssembly() = a +select a 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/standalone_dependencies_nuget with_space/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget with_space/Assemblies.expected new file mode 100644 index 00000000000..81c60c5c30a --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget with_space/Assemblies.expected @@ -0,0 +1 @@ +| test-db/working/legacypackages/Newtonsoft.Json.6.0.4/lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll:0:0:0:0 | Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed | diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget with_space/Assemblies.ql b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget with_space/Assemblies.ql new file mode 100644 index 00000000000..d3e30baf5fb --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget with_space/Assemblies.ql @@ -0,0 +1,5 @@ +import csharp + +from Assembly a +where exists(a.getFile().getAbsolutePath().indexOf("/legacypackages/")) +select a 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/standalone_dependencies_nuget/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget/Assemblies.expected new file mode 100644 index 00000000000..81c60c5c30a --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget/Assemblies.expected @@ -0,0 +1 @@ +| test-db/working/legacypackages/Newtonsoft.Json.6.0.4/lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll:0:0:0:0 | Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed | diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget/Assemblies.ql b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget/Assemblies.ql new file mode 100644 index 00000000000..d3e30baf5fb --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget/Assemblies.ql @@ -0,0 +1,5 @@ +import csharp + +from Assembly a +where exists(a.getFile().getAbsolutePath().indexOf("/legacypackages/")) +select a 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/standalone_dependencies_nuget_config_error/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/Assemblies.expected new file mode 100644 index 00000000000..4b2df5c2e32 --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/Assemblies.expected @@ -0,0 +1 @@ +| test-db/working/missingpackages/newtonsoft.json/13.0.3/lib/net6.0/Newtonsoft.Json.dll:0:0:0:0 | Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed | diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/Assemblies.ql b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/Assemblies.ql new file mode 100644 index 00000000000..0eb33b7ae37 --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/Assemblies.ql @@ -0,0 +1,5 @@ +import csharp + +from Assembly a +where exists(a.getFile().getAbsolutePath().indexOf("newtonsoft.json")) +select a 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/standalone_dependencies_nuget_config_error_timeout/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/Assemblies.expected new file mode 100644 index 00000000000..4b2df5c2e32 --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/Assemblies.expected @@ -0,0 +1 @@ +| test-db/working/missingpackages/newtonsoft.json/13.0.3/lib/net6.0/Newtonsoft.Json.dll:0:0:0:0 | Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed | diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/Assemblies.ql b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/Assemblies.ql new file mode 100644 index 00000000000..0eb33b7ae37 --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error_timeout/Assemblies.ql @@ -0,0 +1,5 @@ +import csharp + +from Assembly a +where exists(a.getFile().getAbsolutePath().indexOf("newtonsoft.json")) +select a 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/standalone_dependencies_nuget_config_fallback/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/Assemblies.expected new file mode 100644 index 00000000000..4b2df5c2e32 --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/Assemblies.expected @@ -0,0 +1 @@ +| test-db/working/missingpackages/newtonsoft.json/13.0.3/lib/net6.0/Newtonsoft.Json.dll:0:0:0:0 | Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed | diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/Assemblies.ql b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/Assemblies.ql new file mode 100644 index 00000000000..0eb33b7ae37 --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/Assemblies.ql @@ -0,0 +1,5 @@ +import csharp + +from Assembly a +where exists(a.getFile().getAbsolutePath().indexOf("newtonsoft.json")) +select a 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/standalone_dependencies_nuget_no_sources/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_no_sources/Assemblies.expected new file mode 100644 index 00000000000..81c60c5c30a --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_no_sources/Assemblies.expected @@ -0,0 +1 @@ +| test-db/working/legacypackages/Newtonsoft.Json.6.0.4/lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll:0:0:0:0 | Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed | diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_no_sources/Assemblies.ql b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_no_sources/Assemblies.ql new file mode 100644 index 00000000000..d3e30baf5fb --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_no_sources/Assemblies.ql @@ -0,0 +1,5 @@ +import csharp + +from Assembly a +where exists(a.getFile().getAbsolutePath().indexOf("/legacypackages/")) +select a 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/standalone_dependencies_nuget_versions/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_versions/Assemblies.expected new file mode 100644 index 00000000000..10fa6873383 --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_versions/Assemblies.expected @@ -0,0 +1 @@ +| test-db/working/packages/newtonsoft.json/13.0.1/lib/netstandard2.0/Newtonsoft.Json.dll:0:0:0:0 | Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed | diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_versions/Assemblies.ql b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_versions/Assemblies.ql new file mode 100644 index 00000000000..0eb33b7ae37 --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_versions/Assemblies.ql @@ -0,0 +1,5 @@ +import csharp + +from Assembly a +where exists(a.getFile().getAbsolutePath().indexOf("newtonsoft.json")) +select a 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/standalone_dependencies/Assemblies.expected b/csharp/ql/integration-tests/windows-only/standalone_dependencies/Assemblies.expected deleted file mode 100644 index bddfcec4690..00000000000 --- a/csharp/ql/integration-tests/windows-only/standalone_dependencies/Assemblies.expected +++ /dev/null @@ -1,210 +0,0 @@ -| [...]/avalara.avatax/23.11.0/lib/netstandard2.0/Avalara.AvaTax.RestClient.dll | -| [...]/microsoft.bcl.asyncinterfaces/8.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.CSharp.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.VisualBasic.Core.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.Win32.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.Win32.Registry.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.AppContext.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Buffers.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.Concurrent.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.Immutable.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.NonGeneric.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.Specialized.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.Annotations.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.DataAnnotations.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.EventBasedAsync.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.TypeConverter.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Configuration.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Console.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Core.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Data.Common.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Data.DataSetExtensions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Data.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Contracts.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Debug.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.DiagnosticSource.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.FileVersionInfo.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Process.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.StackTrace.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.TextWriterTraceListener.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Tools.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.TraceSource.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Tracing.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Drawing.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Dynamic.Runtime.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Formats.Asn1.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Formats.Tar.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Globalization.Calendars.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Globalization.Extensions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Globalization.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.Brotli.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.FileSystem.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.ZipFile.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.AccessControl.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.DriveInfo.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.Watcher.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.IsolatedStorage.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.MemoryMappedFiles.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Pipes.AccessControl.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Pipes.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.UnmanagedMemoryStream.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.Expressions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.Parallel.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.Queryable.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Memory.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Http.Json.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Http.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.HttpListener.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Mail.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.NameResolution.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.NetworkInformation.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Ping.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Quic.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Requests.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Security.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.ServicePoint.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Sockets.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebClient.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebHeaderCollection.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebProxy.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebSockets.Client.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebSockets.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Numerics.Vectors.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Numerics.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ObjectModel.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.DispatchProxy.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Emit.ILGeneration.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Emit.Lightweight.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Emit.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Extensions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Metadata.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.TypeExtensions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Resources.Reader.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Resources.ResourceManager.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Resources.Writer.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.CompilerServices.Unsafe.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.CompilerServices.VisualC.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Extensions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Handles.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.InteropServices.JavaScript.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.InteropServices.RuntimeInformation.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.InteropServices.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Intrinsics.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Loader.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Numerics.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Formatters.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Json.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Xml.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.AccessControl.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Claims.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Algorithms.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Cng.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Csp.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Encoding.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.OpenSsl.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Primitives.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.X509Certificates.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Principal.Windows.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Principal.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.SecureString.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ServiceModel.Web.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ServiceProcess.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encoding.CodePages.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encoding.Extensions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encoding.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encodings.Web.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Json.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.RegularExpressions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Channels.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Overlapped.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.Dataflow.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.Extensions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.Parallel.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Thread.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.ThreadPool.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Timer.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Transactions.Local.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Transactions.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ValueTuple.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Web.HttpUtility.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Web.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Windows.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.Linq.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.ReaderWriter.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.Serialization.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XDocument.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XPath.XDocument.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XPath.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XmlDocument.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XmlSerializer.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/mscorlib.dll | -| [...]/microsoft.netcore.app.ref/8.0.1/ref/net8.0/netstandard.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/Accessibility.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/Microsoft.VisualBasic.Forms.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/Microsoft.VisualBasic.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/Microsoft.Win32.Registry.AccessControl.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/Microsoft.Win32.SystemEvents.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationCore.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.Aero2.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.Aero.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.AeroLite.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.Classic.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.Luna.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.Royale.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationUI.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/ReachFramework.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.CodeDom.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Configuration.ConfigurationManager.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Design.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Diagnostics.EventLog.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Diagnostics.PerformanceCounter.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.DirectoryServices.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Drawing.Common.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Drawing.Design.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Drawing.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.IO.Packaging.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Printing.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Resources.Extensions.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Pkcs.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.ProtectedData.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Xml.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Security.Permissions.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Threading.AccessControl.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Controls.Ribbon.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Extensions.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Forms.Design.Editors.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Forms.Design.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Forms.Primitives.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Forms.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Input.Manipulations.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Presentation.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Xaml.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/UIAutomationClient.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/UIAutomationClientSideProviders.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/UIAutomationProvider.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/UIAutomationTypes.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/WindowsBase.dll | -| [...]/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/WindowsFormsIntegration.dll | -| [...]/newtonsoft.json/12.0.1/lib/netstandard2.0/Newtonsoft.Json.dll | diff --git a/csharp/ql/integration-tests/windows-only/standalone_dependencies/Assemblies.ql b/csharp/ql/integration-tests/windows-only/standalone_dependencies/Assemblies.ql deleted file mode 100644 index b78ceee2d8f..00000000000 --- a/csharp/ql/integration-tests/windows-only/standalone_dependencies/Assemblies.ql +++ /dev/null @@ -1,17 +0,0 @@ -import csharp - -private string getPath(Assembly a) { - not a.getCompilation().getOutputAssembly() = a and - exists(string s | s = a.getFile().getAbsolutePath() | - result = - "[...]" + - s.substring(s.indexOf("test-db/working/") + "test-db/working/".length() + 16 + - "/packages".length(), s.length()) - or - result = s and - not exists(s.indexOf("test-db/working/")) - ) -} - -from Assembly a -select getPath(a) 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/standalone_dependencies/Assemblies.expected b/csharp/ql/integration-tests/windows/standalone_dependencies/Assemblies.expected new file mode 100644 index 00000000000..d4d36b1d0e6 --- /dev/null +++ b/csharp/ql/integration-tests/windows/standalone_dependencies/Assemblies.expected @@ -0,0 +1,210 @@ +| test-db/working/packages/avalara.avatax/23.11.0/lib/netstandard2.0/Avalara.AvaTax.RestClient.dll:0:0:0:0 | Avalara.AvaTax.RestClient, Version=0.0.0.0, Culture=neutral, PublicKeyToken=be94eb8ba37fd33c | +| test-db/working/packages/microsoft.bcl.asyncinterfaces/8.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll:0:0:0:0 | Microsoft.Bcl.AsyncInterfaces, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.CSharp.dll:0:0:0:0 | Microsoft.CSharp, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.VisualBasic.Core.dll:0:0:0:0 | Microsoft.VisualBasic.Core, Version=13.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.Win32.Primitives.dll:0:0:0:0 | Microsoft.Win32.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/Microsoft.Win32.Registry.dll:0:0:0:0 | Microsoft.Win32.Registry, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.AppContext.dll:0:0:0:0 | System.AppContext, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Buffers.dll:0:0:0:0 | System.Buffers, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.Concurrent.dll:0:0:0:0 | System.Collections.Concurrent, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.Immutable.dll:0:0:0:0 | System.Collections.Immutable, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.NonGeneric.dll:0:0:0:0 | System.Collections.NonGeneric, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.Specialized.dll:0:0:0:0 | System.Collections.Specialized, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Collections.dll:0:0:0:0 | System.Collections, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.Annotations.dll:0:0:0:0 | System.ComponentModel.Annotations, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.DataAnnotations.dll:0:0:0:0 | System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.EventBasedAsync.dll:0:0:0:0 | System.ComponentModel.EventBasedAsync, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.Primitives.dll:0:0:0:0 | System.ComponentModel.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.TypeConverter.dll:0:0:0:0 | System.ComponentModel.TypeConverter, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ComponentModel.dll:0:0:0:0 | System.ComponentModel, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Configuration.dll:0:0:0:0 | System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Console.dll:0:0:0:0 | System.Console, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Core.dll:0:0:0:0 | System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Data.Common.dll:0:0:0:0 | System.Data.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Data.DataSetExtensions.dll:0:0:0:0 | System.Data.DataSetExtensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Data.dll:0:0:0:0 | System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Contracts.dll:0:0:0:0 | System.Diagnostics.Contracts, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Debug.dll:0:0:0:0 | System.Diagnostics.Debug, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.DiagnosticSource.dll:0:0:0:0 | System.Diagnostics.DiagnosticSource, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.FileVersionInfo.dll:0:0:0:0 | System.Diagnostics.FileVersionInfo, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Process.dll:0:0:0:0 | System.Diagnostics.Process, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.StackTrace.dll:0:0:0:0 | System.Diagnostics.StackTrace, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.TextWriterTraceListener.dll:0:0:0:0 | System.Diagnostics.TextWriterTraceListener, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Tools.dll:0:0:0:0 | System.Diagnostics.Tools, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.TraceSource.dll:0:0:0:0 | System.Diagnostics.TraceSource, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Diagnostics.Tracing.dll:0:0:0:0 | System.Diagnostics.Tracing, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Drawing.Primitives.dll:0:0:0:0 | System.Drawing.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Dynamic.Runtime.dll:0:0:0:0 | System.Dynamic.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Formats.Asn1.dll:0:0:0:0 | System.Formats.Asn1, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Formats.Tar.dll:0:0:0:0 | System.Formats.Tar, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Globalization.Calendars.dll:0:0:0:0 | System.Globalization.Calendars, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Globalization.Extensions.dll:0:0:0:0 | System.Globalization.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Globalization.dll:0:0:0:0 | System.Globalization, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.Brotli.dll:0:0:0:0 | System.IO.Compression.Brotli, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.FileSystem.dll:0:0:0:0 | System.IO.Compression.FileSystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.ZipFile.dll:0:0:0:0 | System.IO.Compression.ZipFile, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Compression.dll:0:0:0:0 | System.IO.Compression, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.AccessControl.dll:0:0:0:0 | System.IO.FileSystem.AccessControl, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.DriveInfo.dll:0:0:0:0 | System.IO.FileSystem.DriveInfo, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.Primitives.dll:0:0:0:0 | System.IO.FileSystem.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.Watcher.dll:0:0:0:0 | System.IO.FileSystem.Watcher, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.FileSystem.dll:0:0:0:0 | System.IO.FileSystem, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.IsolatedStorage.dll:0:0:0:0 | System.IO.IsolatedStorage, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.MemoryMappedFiles.dll:0:0:0:0 | System.IO.MemoryMappedFiles, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Pipes.AccessControl.dll:0:0:0:0 | System.IO.Pipes.AccessControl, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.Pipes.dll:0:0:0:0 | System.IO.Pipes, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.UnmanagedMemoryStream.dll:0:0:0:0 | System.IO.UnmanagedMemoryStream, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.IO.dll:0:0:0:0 | System.IO, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.Expressions.dll:0:0:0:0 | System.Linq.Expressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.Parallel.dll:0:0:0:0 | System.Linq.Parallel, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.Queryable.dll:0:0:0:0 | System.Linq.Queryable, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Linq.dll:0:0:0:0 | System.Linq, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Memory.dll:0:0:0:0 | System.Memory, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Http.Json.dll:0:0:0:0 | System.Net.Http.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Http.dll:0:0:0:0 | System.Net.Http, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.HttpListener.dll:0:0:0:0 | System.Net.HttpListener, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Mail.dll:0:0:0:0 | System.Net.Mail, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.NameResolution.dll:0:0:0:0 | System.Net.NameResolution, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.NetworkInformation.dll:0:0:0:0 | System.Net.NetworkInformation, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Ping.dll:0:0:0:0 | System.Net.Ping, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Primitives.dll:0:0:0:0 | System.Net.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Quic.dll:0:0:0:0 | System.Net.Quic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Requests.dll:0:0:0:0 | System.Net.Requests, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Security.dll:0:0:0:0 | System.Net.Security, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.ServicePoint.dll:0:0:0:0 | System.Net.ServicePoint, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.Sockets.dll:0:0:0:0 | System.Net.Sockets, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebClient.dll:0:0:0:0 | System.Net.WebClient, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebHeaderCollection.dll:0:0:0:0 | System.Net.WebHeaderCollection, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebProxy.dll:0:0:0:0 | System.Net.WebProxy, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebSockets.Client.dll:0:0:0:0 | System.Net.WebSockets.Client, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.WebSockets.dll:0:0:0:0 | System.Net.WebSockets, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Net.dll:0:0:0:0 | System.Net, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Numerics.Vectors.dll:0:0:0:0 | System.Numerics.Vectors, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Numerics.dll:0:0:0:0 | System.Numerics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ObjectModel.dll:0:0:0:0 | System.ObjectModel, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.DispatchProxy.dll:0:0:0:0 | System.Reflection.DispatchProxy, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Emit.ILGeneration.dll:0:0:0:0 | System.Reflection.Emit.ILGeneration, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Emit.Lightweight.dll:0:0:0:0 | System.Reflection.Emit.Lightweight, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Emit.dll:0:0:0:0 | System.Reflection.Emit, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Extensions.dll:0:0:0:0 | System.Reflection.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Metadata.dll:0:0:0:0 | System.Reflection.Metadata, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.Primitives.dll:0:0:0:0 | System.Reflection.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.TypeExtensions.dll:0:0:0:0 | System.Reflection.TypeExtensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Reflection.dll:0:0:0:0 | System.Reflection, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Resources.Reader.dll:0:0:0:0 | System.Resources.Reader, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Resources.ResourceManager.dll:0:0:0:0 | System.Resources.ResourceManager, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Resources.Writer.dll:0:0:0:0 | System.Resources.Writer, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.CompilerServices.Unsafe.dll:0:0:0:0 | System.Runtime.CompilerServices.Unsafe, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.CompilerServices.VisualC.dll:0:0:0:0 | System.Runtime.CompilerServices.VisualC, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Extensions.dll:0:0:0:0 | System.Runtime.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Handles.dll:0:0:0:0 | System.Runtime.Handles, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.InteropServices.JavaScript.dll:0:0:0:0 | System.Runtime.InteropServices.JavaScript, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.InteropServices.RuntimeInformation.dll:0:0:0:0 | System.Runtime.InteropServices.RuntimeInformation, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.InteropServices.dll:0:0:0:0 | System.Runtime.InteropServices, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Intrinsics.dll:0:0:0:0 | System.Runtime.Intrinsics, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Loader.dll:0:0:0:0 | System.Runtime.Loader, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Numerics.dll:0:0:0:0 | System.Runtime.Numerics, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Formatters.dll:0:0:0:0 | System.Runtime.Serialization.Formatters, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Json.dll:0:0:0:0 | System.Runtime.Serialization.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Primitives.dll:0:0:0:0 | System.Runtime.Serialization.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.Xml.dll:0:0:0:0 | System.Runtime.Serialization.Xml, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.Serialization.dll:0:0:0:0 | System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Runtime.dll:0:0:0:0 | System.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.AccessControl.dll:0:0:0:0 | System.Security.AccessControl, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Claims.dll:0:0:0:0 | System.Security.Claims, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Algorithms.dll:0:0:0:0 | System.Security.Cryptography.Algorithms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Cng.dll:0:0:0:0 | System.Security.Cryptography.Cng, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Csp.dll:0:0:0:0 | System.Security.Cryptography.Csp, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Encoding.dll:0:0:0:0 | System.Security.Cryptography.Encoding, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.OpenSsl.dll:0:0:0:0 | System.Security.Cryptography.OpenSsl, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Primitives.dll:0:0:0:0 | System.Security.Cryptography.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.X509Certificates.dll:0:0:0:0 | System.Security.Cryptography.X509Certificates, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.dll:0:0:0:0 | System.Security.Cryptography, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Principal.Windows.dll:0:0:0:0 | System.Security.Principal.Windows, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.Principal.dll:0:0:0:0 | System.Security.Principal, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.SecureString.dll:0:0:0:0 | System.Security.SecureString, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Security.dll:0:0:0:0 | System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ServiceModel.Web.dll:0:0:0:0 | System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ServiceProcess.dll:0:0:0:0 | System.ServiceProcess, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encoding.CodePages.dll:0:0:0:0 | System.Text.Encoding.CodePages, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encoding.Extensions.dll:0:0:0:0 | System.Text.Encoding.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encoding.dll:0:0:0:0 | System.Text.Encoding, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Encodings.Web.dll:0:0:0:0 | System.Text.Encodings.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.Json.dll:0:0:0:0 | System.Text.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Text.RegularExpressions.dll:0:0:0:0 | System.Text.RegularExpressions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Channels.dll:0:0:0:0 | System.Threading.Channels, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Overlapped.dll:0:0:0:0 | System.Threading.Overlapped, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.Dataflow.dll:0:0:0:0 | System.Threading.Tasks.Dataflow, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.Extensions.dll:0:0:0:0 | System.Threading.Tasks.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.Parallel.dll:0:0:0:0 | System.Threading.Tasks.Parallel, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Tasks.dll:0:0:0:0 | System.Threading.Tasks, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Thread.dll:0:0:0:0 | System.Threading.Thread, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.ThreadPool.dll:0:0:0:0 | System.Threading.ThreadPool, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.Timer.dll:0:0:0:0 | System.Threading.Timer, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Threading.dll:0:0:0:0 | System.Threading, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Transactions.Local.dll:0:0:0:0 | System.Transactions.Local, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Transactions.dll:0:0:0:0 | System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.ValueTuple.dll:0:0:0:0 | System.ValueTuple, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Web.HttpUtility.dll:0:0:0:0 | System.Web.HttpUtility, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Web.dll:0:0:0:0 | System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Windows.dll:0:0:0:0 | System.Windows, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.Linq.dll:0:0:0:0 | System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.ReaderWriter.dll:0:0:0:0 | System.Xml.ReaderWriter, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.Serialization.dll:0:0:0:0 | System.Xml.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XDocument.dll:0:0:0:0 | System.Xml.XDocument, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XPath.XDocument.dll:0:0:0:0 | System.Xml.XPath.XDocument, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XPath.dll:0:0:0:0 | System.Xml.XPath, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XmlDocument.dll:0:0:0:0 | System.Xml.XmlDocument, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.XmlSerializer.dll:0:0:0:0 | System.Xml.XmlSerializer, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.Xml.dll:0:0:0:0 | System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/System.dll:0:0:0:0 | System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/mscorlib.dll:0:0:0:0 | mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.netcore.app.ref/8.0.1/ref/net8.0/netstandard.dll:0:0:0:0 | netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/Accessibility.dll:0:0:0:0 | Accessibility, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/Microsoft.VisualBasic.Forms.dll:0:0:0:0 | Microsoft.VisualBasic.Forms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/Microsoft.VisualBasic.dll:0:0:0:0 | Microsoft.VisualBasic, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/Microsoft.Win32.Registry.AccessControl.dll:0:0:0:0 | Microsoft.Win32.Registry.AccessControl, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/Microsoft.Win32.SystemEvents.dll:0:0:0:0 | Microsoft.Win32.SystemEvents, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationCore.dll:0:0:0:0 | PresentationCore, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.Aero2.dll:0:0:0:0 | PresentationFramework.Aero2, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.Aero.dll:0:0:0:0 | PresentationFramework.Aero, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.AeroLite.dll:0:0:0:0 | PresentationFramework.AeroLite, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.Classic.dll:0:0:0:0 | PresentationFramework.Classic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.Luna.dll:0:0:0:0 | PresentationFramework.Luna, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.Royale.dll:0:0:0:0 | PresentationFramework.Royale, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationFramework.dll:0:0:0:0 | PresentationFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/PresentationUI.dll:0:0:0:0 | PresentationUI, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/ReachFramework.dll:0:0:0:0 | ReachFramework, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.CodeDom.dll:0:0:0:0 | System.CodeDom, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Configuration.ConfigurationManager.dll:0:0:0:0 | System.Configuration.ConfigurationManager, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Design.dll:0:0:0:0 | System.Design, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Diagnostics.EventLog.dll:0:0:0:0 | System.Diagnostics.EventLog, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Diagnostics.PerformanceCounter.dll:0:0:0:0 | System.Diagnostics.PerformanceCounter, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.DirectoryServices.dll:0:0:0:0 | System.DirectoryServices, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Drawing.Common.dll:0:0:0:0 | System.Drawing.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Drawing.Design.dll:0:0:0:0 | System.Drawing.Design, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Drawing.dll:0:0:0:0 | System.Drawing, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.IO.Packaging.dll:0:0:0:0 | System.IO.Packaging, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Printing.dll:0:0:0:0 | System.Printing, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Resources.Extensions.dll:0:0:0:0 | System.Resources.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Pkcs.dll:0:0:0:0 | System.Security.Cryptography.Pkcs, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.ProtectedData.dll:0:0:0:0 | System.Security.Cryptography.ProtectedData, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Security.Cryptography.Xml.dll:0:0:0:0 | System.Security.Cryptography.Xml, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Security.Permissions.dll:0:0:0:0 | System.Security.Permissions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Threading.AccessControl.dll:0:0:0:0 | System.Threading.AccessControl, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Controls.Ribbon.dll:0:0:0:0 | System.Windows.Controls.Ribbon, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Extensions.dll:0:0:0:0 | System.Windows.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Forms.Design.Editors.dll:0:0:0:0 | System.Windows.Forms.Design.Editors, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Forms.Design.dll:0:0:0:0 | System.Windows.Forms.Design, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Forms.Primitives.dll:0:0:0:0 | System.Windows.Forms.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Forms.dll:0:0:0:0 | System.Windows.Forms, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Input.Manipulations.dll:0:0:0:0 | System.Windows.Input.Manipulations, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Windows.Presentation.dll:0:0:0:0 | System.Windows.Presentation, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/System.Xaml.dll:0:0:0:0 | System.Xaml, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/UIAutomationClient.dll:0:0:0:0 | UIAutomationClient, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/UIAutomationClientSideProviders.dll:0:0:0:0 | UIAutomationClientSideProviders, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/UIAutomationProvider.dll:0:0:0:0 | UIAutomationProvider, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/UIAutomationTypes.dll:0:0:0:0 | UIAutomationTypes, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/WindowsBase.dll:0:0:0:0 | WindowsBase, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/microsoft.windowsdesktop.app.ref/8.0.1/ref/net8.0/WindowsFormsIntegration.dll:0:0:0:0 | WindowsFormsIntegration, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 | +| test-db/working/packages/newtonsoft.json/12.0.1/lib/netstandard2.0/Newtonsoft.Json.dll:0:0:0:0 | Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed | diff --git a/csharp/ql/integration-tests/windows/standalone_dependencies/Assemblies.ql b/csharp/ql/integration-tests/windows/standalone_dependencies/Assemblies.ql new file mode 100644 index 00000000000..931e64d87ba --- /dev/null +++ b/csharp/ql/integration-tests/windows/standalone_dependencies/Assemblies.ql @@ -0,0 +1,5 @@ +import csharp + +from Assembly a +where not a.getCompilation().getOutputAssembly() = a +select a 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..a2aaab7a542 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,3 +1,14 @@ +## 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 new file mode 100644 index 00000000000..61d4f6ec600 --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-08-21-abstract-asp-controller.md @@ -0,0 +1,4 @@ +--- +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 new file mode 100644 index 00000000000..f750ccacf57 --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-08-21-partial-methods.md @@ -0,0 +1,4 @@ +--- +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-03-outdated-deprecations.md b/csharp/ql/lib/change-notes/2024-09-03-outdated-deprecations.md new file mode 100644 index 00000000000..40571b3273e --- /dev/null +++ b/csharp/ql/lib/change-notes/2024-09-03-outdated-deprecations.md @@ -0,0 +1,6 @@ +--- +category: breaking +--- +* 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. 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/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index 42da17b3841..2ac15439f56 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: 1.1.0 diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 2bba2984c8f..84426015538 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: 1.1.1-dev groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ContentDataFlow.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ContentDataFlow.qll index 76936549051..a0368f1c335 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ContentDataFlow.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ContentDataFlow.qll @@ -1,504 +1,4 @@ -/** - * Provides classes for performing global (inter-procedural) - * content-sensitive data flow analyses. - * - * Unlike `DataFlow::Global`, we allow for data to be stored (possibly nested) inside - * contents of sources and sinks. - * We track flow paths of the form - * - * ``` - * source --value-->* node - * (--read--> node --value-->* node)* - * --(non-value|value)-->* node - * (--store--> node --value-->* node)* - * --value-->* sink - * ``` - * - * where `--value-->` is a value-preserving flow step, `--read-->` is a read - * step, `--store-->` is a store step, and `--(non-value)-->` is a - * non-value-preserving flow step. - * - * That is, first a sequence of 0 or more reads, followed by 0 or more additional - * steps, followed by 0 or more stores, with value-preserving steps allowed in - * between all other steps. - */ - -private import csharp -private import codeql.util.Boolean -private import DataFlowImplCommon -private import DataFlowImplSpecific::Private -private import DataFlowImplSpecific::Private as DataFlowPrivate - -/** - * An input configuration for content data flow. - */ -signature module ConfigSig { - /** - * Holds if `source` is a relevant data flow source. - */ - predicate isSource(DataFlow::Node source); - - /** - * Holds if `sink` is a relevant data flow sink. - */ - predicate isSink(DataFlow::Node sink); - - /** - * Holds if data may flow from `node1` to `node2` in addition to the normal data-flow steps. - */ - default predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { none() } - - /** Holds if data flow into `node` is prohibited. */ - default predicate isBarrier(DataFlow::Node node) { none() } - - /** - * Gets a data flow configuration feature to add restrictions to the set of - * valid flow paths. - * - * - `FeatureHasSourceCallContext`: - * Assume that sources have some existing call context to disallow - * conflicting return-flow directly following the source. - * - `FeatureHasSinkCallContext`: - * Assume that sinks have some existing call context to disallow - * conflicting argument-to-parameter flow directly preceding the sink. - * - `FeatureEqualSourceSinkCallContext`: - * Implies both of the above and additionally ensures that the entire flow - * path preserves the call context. - */ - default DataFlow::FlowFeature getAFeature() { none() } - - /** Gets a limit on the number of reads out of sources and number of stores into sinks. */ - default int accessPathLimit() { result = DataFlowPrivate::accessPathLimit() } - - /** Holds if `c` is relevant for reads out of sources or stores into sinks. */ - default predicate isRelevantContent(DataFlow::ContentSet c) { any() } -} - -/** - * Constructs a global content data flow computation. - */ -module Global { - private module FlowConfig implements DataFlow::StateConfigSig { - class FlowState = State; - - predicate isSource(DataFlow::Node source, FlowState state) { - ContentConfig::isSource(source) and - state.(InitState).decode(true) - } - - predicate isSink(DataFlow::Node sink, FlowState state) { - ContentConfig::isSink(sink) and - ( - state instanceof InitState or - state instanceof StoreState or - state instanceof ReadState - ) - } - - predicate isAdditionalFlowStep( - DataFlow::Node node1, FlowState state1, DataFlow::Node node2, FlowState state2 - ) { - storeStep(node1, state1, _, node2, state2) or - readStep(node1, state1, _, node2, state2) or - additionalStep(node1, state1, node2, state2) - } - - predicate isAdditionalFlowStep = ContentConfig::isAdditionalFlowStep/2; - - predicate isBarrier = ContentConfig::isBarrier/1; - - DataFlow::FlowFeature getAFeature() { result = ContentConfig::getAFeature() } - - predicate accessPathLimit = ContentConfig::accessPathLimit/0; - - // needed to record reads/stores inside summarized callables - predicate includeHiddenNodes() { any() } - } - - private module Flow = DataFlow::GlobalWithState; - - /** - * Holds if data stored inside `sourceAp` on `source` flows to `sinkAp` inside `sink` - * for this configuration. `preservesValue` indicates whether any of the additional - * flow steps defined by `isAdditionalFlowStep` are needed. - * - * For the source access path, `sourceAp`, the top of the stack represents the content - * that was last read from. That is, if `sourceAp` is `Field1.Field2` (with `Field1` - * being the top of the stack), then there is flow from `source.Field2.Field1`. - * - * For the sink access path, `sinkAp`, the top of the stack represents the content - * that was last stored into. That is, if `sinkAp` is `Field1.Field2` (with `Field1` - * being the top of the stack), then there is flow into `sink.Field1.Field2`. - */ - predicate flow( - DataFlow::Node source, AccessPath sourceAp, DataFlow::Node sink, AccessPath sinkAp, - boolean preservesValue - ) { - exists(Flow::PathNode pathSource, Flow::PathNode pathSink | - Flow::flowPath(pathSource, pathSink) and - nodeReaches(pathSource, TAccessPathNil(), TAccessPathNil(), pathSink, sourceAp, sinkAp) and - source = pathSource.getNode() and - sink = pathSink.getNode() - | - pathSink.getState().(InitState).decode(preservesValue) - or - pathSink.getState().(ReadState).decode(_, preservesValue) - or - pathSink.getState().(StoreState).decode(_, preservesValue) - ) - } - - private newtype TState = - TInitState(Boolean preservesValue) or - TStoreState(int size, Boolean preservesValue) { - size in [1 .. ContentConfig::accessPathLimit()] - } or - TReadState(int size, Boolean preservesValue) { size in [1 .. ContentConfig::accessPathLimit()] } - - abstract private class State extends TState { - abstract string toString(); - } - - /** A flow state representing no reads or stores. */ - private class InitState extends State, TInitState { - private boolean preservesValue_; - - InitState() { this = TInitState(preservesValue_) } - - override string toString() { result = "Init(" + preservesValue_ + ")" } - - predicate decode(boolean preservesValue) { preservesValue = preservesValue_ } - } - - /** A flow state representing that content has been stored into. */ - private class StoreState extends State, TStoreState { - private boolean preservesValue_; - private int size_; - - StoreState() { this = TStoreState(size_, preservesValue_) } - - override string toString() { result = "StoreState(" + size_ + "," + preservesValue_ + ")" } - - predicate decode(int size, boolean preservesValue) { - size = size_ and preservesValue = preservesValue_ - } - } - - /** A flow state representing that content has been read from. */ - private class ReadState extends State, TReadState { - private boolean preservesValue_; - private int size_; - - ReadState() { this = TReadState(size_, preservesValue_) } - - override string toString() { result = "ReadState(" + size_ + "," + preservesValue_ + ")" } - - predicate decode(int size, boolean preservesValue) { - size = size_ and preservesValue = preservesValue_ - } - } - - private predicate storeStep( - DataFlow::Node node1, State state1, DataFlow::ContentSet c, DataFlow::Node node2, - StoreState state2 - ) { - exists(boolean preservesValue, int size | - storeSet(node1, c, node2, _, _) and - ContentConfig::isRelevantContent(c) and - state2.decode(size + 1, preservesValue) - | - state1.(InitState).decode(preservesValue) and size = 0 - or - state1.(ReadState).decode(_, preservesValue) and size = 0 - or - state1.(StoreState).decode(size, preservesValue) - ) - } - - private predicate readStep( - DataFlow::Node node1, State state1, DataFlow::ContentSet c, DataFlow::Node node2, - ReadState state2 - ) { - exists(int size | - readSet(node1, c, node2) and - ContentConfig::isRelevantContent(c) and - state2.decode(size + 1, true) - | - state1.(InitState).decode(true) and - size = 0 - or - state1.(ReadState).decode(size, true) - ) - } - - private predicate additionalStep( - DataFlow::Node node1, State state1, DataFlow::Node node2, State state2 - ) { - ContentConfig::isAdditionalFlowStep(node1, node2) and - ( - state1 instanceof InitState and - state2.(InitState).decode(false) - or - exists(int size | - state1.(ReadState).decode(size, _) and - state2.(ReadState).decode(size, false) - ) - ) - } - - private newtype TAccessPath = - TAccessPathNil() or - TAccessPathCons(DataFlow::ContentSet head, AccessPath tail) { - nodeReachesStore(_, _, _, _, head, _, tail) - or - nodeReachesRead(_, _, _, _, head, tail, _) - } - - /** An access path. */ - class AccessPath extends TAccessPath { - /** Gets the head of this access path, if any. */ - DataFlow::ContentSet getHead() { this = TAccessPathCons(result, _) } - - /** Gets the tail of this access path, if any. */ - AccessPath getTail() { this = TAccessPathCons(_, result) } - - /** - * Gets a textual representation of this access path. - * - * Elements are dot-separated, and the head of the stack is - * rendered first. - */ - string toString() { - this = TAccessPathNil() and - result = "" - or - exists(DataFlow::ContentSet head, AccessPath tail | - this = TAccessPathCons(head, tail) and - result = head + "." + tail - ) - } - } - - /** - * Provides a big-step flow relation, where flow stops at read/store steps that - * must be recorded, and flow via `subpaths` such that reads/stores inside - * summarized callables can be recorded as well. - */ - private module BigStepFlow { - private predicate reachesSink(Flow::PathNode node) { - FlowConfig::isSink(node.getNode(), node.getState()) - or - reachesSink(node.getASuccessor()) - } - - /** - * Holds if the flow step `pred -> succ` should not be allowed to be included - * in the big-step relation. - */ - pragma[nomagic] - private predicate excludeStep(Flow::PathNode pred, Flow::PathNode succ) { - pred.getASuccessor() = succ and - ( - // we need to record reads/stores inside summarized callables - Flow::PathGraph::subpaths(pred, _, _, succ) - or - // only allow flow into a summarized callable, as part of the big-step - // relation, when flow can reach a sink without going back out - Flow::PathGraph::subpaths(pred, succ, _, _) and - not reachesSink(succ) - or - // needed to record store steps - storeStep(pred.getNode(), pred.getState(), _, succ.getNode(), succ.getState()) - or - // needed to record read steps - readStep(pred.getNode(), pred.getState(), _, succ.getNode(), succ.getState()) - ) - } - - pragma[nomagic] - private DataFlowCallable getEnclosingCallableImpl(Flow::PathNode node) { - result = getNodeEnclosingCallable(node.getNode()) - } - - pragma[inline] - private DataFlowCallable getEnclosingCallable(Flow::PathNode node) { - pragma[only_bind_into](result) = getEnclosingCallableImpl(pragma[only_bind_out](node)) - } - - pragma[nomagic] - private predicate bigStepEntry(Flow::PathNode node) { - ( - FlowConfig::isSource(node.getNode(), node.getState()) - or - excludeStep(_, node) - or - Flow::PathGraph::subpaths(_, node, _, _) - ) - } - - pragma[nomagic] - private predicate bigStepExit(Flow::PathNode node) { - ( - bigStepEntry(node) - or - FlowConfig::isSink(node.getNode(), node.getState()) - or - excludeStep(node, _) - or - Flow::PathGraph::subpaths(_, _, node, _) - ) - } - - pragma[nomagic] - private predicate step(Flow::PathNode pred, Flow::PathNode succ) { - pred.getASuccessor() = succ and - not excludeStep(pred, succ) - } - - pragma[nomagic] - private predicate stepRec(Flow::PathNode pred, Flow::PathNode succ) { - step(pred, succ) and - not bigStepEntry(pred) - } - - private predicate stepRecPlus(Flow::PathNode n1, Flow::PathNode n2) = fastTC(stepRec/2)(n1, n2) - - /** - * Holds if there is flow `pathSucc+(pred) = succ`, and such a flow path does - * not go through any reads/stores that need to be recorded, or summarized - * steps. - */ - pragma[nomagic] - private predicate bigStep(Flow::PathNode pred, Flow::PathNode succ) { - exists(Flow::PathNode mid | - bigStepEntry(pred) and - step(pred, mid) - | - succ = mid - or - stepRecPlus(mid, succ) - ) and - bigStepExit(succ) - } - - pragma[nomagic] - predicate bigStepNotLocal(Flow::PathNode pred, Flow::PathNode succ) { - bigStep(pred, succ) and - not getEnclosingCallable(pred) = getEnclosingCallable(succ) - } - - pragma[nomagic] - predicate bigStepMaybeLocal(Flow::PathNode pred, Flow::PathNode succ) { - bigStep(pred, succ) and - getEnclosingCallable(pred) = getEnclosingCallable(succ) - } - } - - /** - * Holds if `source` can reach `node`, having read `reads` from the source and - * written `stores` into `node`. - * - * `source` is either a source from a configuration, in which case `scReads` and - * `scStores` are always empty, or it is the parameter of a summarized callable, - * in which case `scReads` and `scStores` record the reads/stores for a summary - * context, that is, the reads/stores for an argument that can reach the parameter. - */ - pragma[nomagic] - private predicate nodeReaches( - Flow::PathNode source, AccessPath scReads, AccessPath scStores, Flow::PathNode node, - AccessPath reads, AccessPath stores - ) { - node = source and - reads = scReads and - stores = scStores and - ( - Flow::flowPath(source, _) and - scReads = TAccessPathNil() and - scStores = TAccessPathNil() - or - // the argument in a sub path can be reached, so we start flow from the sub path - // parameter, while recording the read/store summary context - exists(Flow::PathNode arg | - nodeReachesSubpathArg(_, _, _, arg, scReads, scStores) and - Flow::PathGraph::subpaths(arg, source, _, _) - ) - ) - or - exists(Flow::PathNode mid | - nodeReaches(source, scReads, scStores, mid, reads, stores) and - BigStepFlow::bigStepMaybeLocal(mid, node) - ) - or - exists(Flow::PathNode mid | - nodeReaches(source, scReads, scStores, mid, reads, stores) and - BigStepFlow::bigStepNotLocal(mid, node) and - // when flow is not local, we cannot flow back out, so we may stop - // flow early when computing summary flow - Flow::flowPath(source, _) and - scReads = TAccessPathNil() and - scStores = TAccessPathNil() - ) - or - // store step - exists(AccessPath storesMid, DataFlow::ContentSet c | - nodeReachesStore(source, scReads, scStores, node, c, reads, storesMid) and - stores = TAccessPathCons(c, storesMid) - ) - or - // read step - exists(AccessPath readsMid, DataFlow::ContentSet c | - nodeReachesRead(source, scReads, scStores, node, c, readsMid, stores) and - reads = TAccessPathCons(c, readsMid) - ) - or - // flow-through step; match outer stores/reads with inner store/read summary contexts - exists(Flow::PathNode mid, AccessPath innerScReads, AccessPath innerScStores | - nodeReachesSubpathArg(source, scReads, scStores, mid, innerScReads, innerScStores) and - subpathArgReachesOut(mid, innerScReads, innerScStores, node, reads, stores) - ) - } - - pragma[nomagic] - private predicate nodeReachesStore( - Flow::PathNode source, AccessPath scReads, AccessPath scStores, Flow::PathNode node, - DataFlow::ContentSet c, AccessPath reads, AccessPath stores - ) { - exists(Flow::PathNode mid | - nodeReaches(source, scReads, scStores, mid, reads, stores) and - storeStep(mid.getNode(), mid.getState(), c, node.getNode(), node.getState()) and - mid.getASuccessor() = node - ) - } - - pragma[nomagic] - private predicate nodeReachesRead( - Flow::PathNode source, AccessPath scReads, AccessPath scStores, Flow::PathNode node, - DataFlow::ContentSet c, AccessPath reads, AccessPath stores - ) { - exists(Flow::PathNode mid | - nodeReaches(source, scReads, scStores, mid, reads, stores) and - readStep(mid.getNode(), mid.getState(), c, node.getNode(), node.getState()) and - mid.getASuccessor() = node - ) - } - - pragma[nomagic] - private predicate nodeReachesSubpathArg( - Flow::PathNode source, AccessPath scReads, AccessPath scStores, Flow::PathNode arg, - AccessPath reads, AccessPath stores - ) { - nodeReaches(source, scReads, scStores, arg, reads, stores) and - Flow::PathGraph::subpaths(arg, _, _, _) - } - - pragma[nomagic] - private predicate subpathArgReachesOut( - Flow::PathNode arg, AccessPath scReads, AccessPath scStores, Flow::PathNode out, - AccessPath reads, AccessPath stores - ) { - exists(Flow::PathNode source, Flow::PathNode ret | - nodeReaches(source, scReads, scStores, ret, reads, stores) and - Flow::PathGraph::subpaths(arg, source, ret, out) - ) - } -} +private import semmle.code.csharp.Location +private import DataFlowImplSpecific +private import codeql.dataflow.internal.ContentDataFlowImpl +import MakeImplContentDataFlow 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 fef73365de0..1394f238de7 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll @@ -908,19 +908,20 @@ private class Argument extends Expr { * * `postUpdate` indicates whether the store targets a post-update node. */ -private predicate fieldOrPropertyStore(Expr e, Content c, Expr src, Expr q, boolean postUpdate) { +private predicate fieldOrPropertyStore(Expr e, ContentSet c, Expr src, Expr q, boolean postUpdate) { exists(FieldOrProperty f | - c = f.getContent() and + c = f.getContentSet() and ( f.isFieldLike() and f instanceof InstanceFieldOrProperty or exists( FlowSummaryImpl::Private::SummarizedCallableImpl sc, - FlowSummaryImpl::Private::SummaryComponentStack input + FlowSummaryImpl::Private::SummaryComponentStack input, ContentSet readSet | sc.propagatesFlow(input, _, _, _) and - input.contains(FlowSummaryImpl::Private::SummaryComponent::content(f.getContent())) + input.contains(FlowSummaryImpl::Private::SummaryComponent::content(readSet)) and + c.getAStoreContent() = readSet.getAReadContent() ) ) | @@ -970,28 +971,13 @@ private predicate fieldOrPropertyStore(Expr e, Content c, Expr src, Expr q, bool ) } -/** Holds if property `p1` overrides or implements source declaration property `p2`. */ -private predicate overridesOrImplementsSourceDecl(Property p1, Property p2) { - p1.getOverridee*().getUnboundDeclaration() = p2 - or - p1.getAnUltimateImplementee().getUnboundDeclaration() = p2 -} - /** * Holds if `e2` is an expression that reads field or property `c` from - * expression `e1`. This takes overriding into account for properties written - * from library code. + * expression `e1`. */ -private predicate fieldOrPropertyRead(Expr e1, Content c, FieldOrPropertyRead e2) { +private predicate fieldOrPropertyRead(Expr e1, ContentSet c, FieldOrPropertyRead e2) { e1 = e2.getQualifier() and - exists(FieldOrProperty ret | c = ret.getContent() | - ret = e2.getTarget() - or - exists(Property target | - target.getGetter() = e2.(PropertyCall).getARuntimeTarget() and - overridesOrImplementsSourceDecl(target, ret) - ) - ) + c = e2.getTarget().(FieldOrProperty).getContentSet() } /** @@ -1208,6 +1194,11 @@ private module Cached { } or TCapturedVariableContent(VariableCapture::CapturedVariable v) + cached + newtype TContentSet = + TSingletonContent(Content c) { not c instanceof PropertyContent } or + TPropertyContentSet(Property p) { p.isUnboundDeclaration() } + cached newtype TContentApprox = TFieldApproxContent(string firstChar) { firstChar = approximateFieldContent(_) } or @@ -2076,10 +2067,10 @@ class FieldOrProperty extends Assignable, Modifiable { } /** Gets the content that matches this field or property. */ - Content getContent() { - result.(FieldContent).getField() = this.getUnboundDeclaration() + ContentSet getContentSet() { + result.isField(this.getUnboundDeclaration()) or - result.(PropertyContent).getProperty() = this.getUnboundDeclaration() + result.isProperty(this.getUnboundDeclaration()) } } @@ -2211,8 +2202,8 @@ private class StoreStepConfiguration extends ControlFlowReachabilityConfiguratio } pragma[nomagic] -private PropertyContent getResultContent() { - result.getProperty() = any(SystemThreadingTasksTaskTClass c_).getResultProperty() +private ContentSet getResultContent() { + result.isProperty(any(SystemThreadingTasksTaskTClass c_).getResultProperty()) } private predicate primaryConstructorParameterStore( @@ -2226,17 +2217,16 @@ private predicate primaryConstructorParameterStore( ) } -/** - * Holds if data can flow from `node1` to `node2` via an assignment to - * content `c`. - */ -predicate storeStep(Node node1, ContentSet c, Node node2) { +pragma[nomagic] +private predicate recordParameter(RecordType t, Parameter p, string name) { + p.getName() = name and p.getCallable().getDeclaringType() = t +} + +private predicate storeContentStep(Node node1, Content c, Node node2) { exists(StoreStepConfiguration x, ExprNode node, boolean postUpdate | hasNodePath(x, node1, node) and if postUpdate = true then node = node2.(PostUpdateNode).getPreUpdateNode() else node = node2 | - fieldOrPropertyStore(_, c, node1.asExpr(), node.getExpr(), postUpdate) - or arrayStore(_, node1.asExpr(), node.getExpr(), postUpdate) and c instanceof ElementContent ) or @@ -2257,26 +2247,59 @@ predicate storeStep(Node node1, ContentSet c, Node node2) { c instanceof ElementContent ) or + primaryConstructorParameterStore(node1, c, node2) + or + exists(Parameter p, DataFlowCallable callable | + node1 = TExplicitParameterNode(p, callable) and + node2 = TPrimaryConstructorThisAccessNode(p, true, callable) and + not recordParameter(_, p, _) and + c.(PrimaryConstructorParameterContent).getParameter() = p + ) + or + VariableCapture::storeStep(node1, c, node2) +} + +pragma[nomagic] +private predicate recordProperty(RecordType t, ContentSet c, string name) { + exists(Property p | + c.isProperty(p) and + p.getName() = name and + p.getDeclaringType() = t + ) +} + +/** + * Holds if data can flow from `node1` to `node2` via an assignment to + * content `c`. + */ +predicate storeStep(Node node1, ContentSet c, Node node2) { + exists(Content cont | + storeContentStep(node1, cont, node2) and + c.isSingleton(cont) + ) + or + exists(StoreStepConfiguration x, ExprNode node, boolean postUpdate | + hasNodePath(x, node1, node) and + if postUpdate = true then node = node2.(PostUpdateNode).getPreUpdateNode() else node = node2 + | + fieldOrPropertyStore(_, c, node1.asExpr(), node.getExpr(), postUpdate) + ) + or exists(Expr e | e = node1.asExpr() and node2.(AsyncReturnNode).getExpr() = e and c = getResultContent() ) or - primaryConstructorParameterStore(node1, c, node2) - or - exists(Parameter p, DataFlowCallable callable | + exists(Parameter p, DataFlowCallable callable, RecordType t, string name | node1 = TExplicitParameterNode(p, callable) and node2 = TPrimaryConstructorThisAccessNode(p, true, callable) and - if p.getCallable().getDeclaringType() instanceof RecordType - then c.(PropertyContent).getProperty().getName() = p.getName() - else c.(PrimaryConstructorParameterContent).getParameter() = p + recordParameter(t, p, name) and + recordProperty(t, c, name) ) or FlowSummaryImpl::Private::Steps::summaryStoreStep(node1.(FlowSummaryNode).getSummaryNode(), c, node2.(FlowSummaryNode).getSummaryNode()) - or - VariableCapture::storeStep(node1, c, node2) } private class ReadStepConfiguration extends ControlFlowReachabilityConfiguration { @@ -2344,14 +2367,8 @@ private class ReadStepConfiguration extends ControlFlowReachabilityConfiguration } } -/** - * Holds if data can flow from `node1` to `node2` via a read of content `c`. - */ -predicate readStep(Node node1, ContentSet c, Node node2) { +private predicate readContentStep(Node node1, Content c, Node node2) { exists(ReadStepConfiguration x | - hasNodePath(x, node1, node2) and - fieldOrPropertyRead(node1.asExpr(), c, node2.asExpr()) - or hasNodePath(x, node1, node2) and arrayRead(node1.asExpr(), node2.asExpr()) and c instanceof ElementContent @@ -2363,10 +2380,6 @@ predicate readStep(Node node1, ContentSet c, Node node2) { c instanceof ElementContent ) or - hasNodePath(x, node1, node2) and - node2.asExpr().(AwaitExpr).getExpr() = node1.asExpr() and - c = getResultContent() - or node1 = any(InstanceParameterAccessPreNode n | n.getUnderlyingControlFlowNode() = node2.(ExprNode).getControlFlowNode() and @@ -2404,31 +2417,30 @@ predicate readStep(Node node1, ContentSet c, Node node2) { ) ) or - FlowSummaryImpl::Private::Steps::summaryReadStep(node1.(FlowSummaryNode).getSummaryNode(), c, - node2.(FlowSummaryNode).getSummaryNode()) - or VariableCapture::readStep(node1, c, node2) } /** - * Holds if values stored inside content `c` are cleared at node `n`. For example, - * any value stored inside `f` is cleared at the pre-update node associated with `x` - * in `x.f = newValue`. + * Holds if data can flow from `node1` to `node2` via a read of content `c`. */ -predicate clearsContent(Node n, ContentSet c) { - fieldOrPropertyStore(_, c, _, n.asExpr(), true) - or - fieldOrPropertyStore(_, c, _, n.(ObjectInitializerNode).getInitializer(), false) - or - FlowSummaryImpl::Private::Steps::summaryClearsContent(n.(FlowSummaryNode).getSummaryNode(), c) - or - exists(WithExpr we, ObjectInitializer oi, FieldOrProperty f | - oi = we.getInitializer() and - n.asExpr() = oi and - f = oi.getAMemberInitializer().getInitializedMember() and - c = f.getContent() +predicate readStep(Node node1, ContentSet c, Node node2) { + exists(Content cont | + readContentStep(node1, cont, node2) and + c.isSingleton(cont) ) or + exists(ReadStepConfiguration x | hasNodePath(x, node1, node2) | + fieldOrPropertyRead(node1.asExpr(), c, node2.asExpr()) + or + node2.asExpr().(AwaitExpr).getExpr() = node1.asExpr() and + c = getResultContent() + ) + or + FlowSummaryImpl::Private::Steps::summaryReadStep(node1.(FlowSummaryNode).getSummaryNode(), c, + node2.(FlowSummaryNode).getSummaryNode()) +} + +private predicate clearsCont(Node n, Content c) { exists(Argument a, Struct s, Field f | a = n.(PostUpdateNode).getPreUpdateNode().asExpr() and a.getType() = s and @@ -2442,6 +2454,31 @@ predicate clearsContent(Node n, ContentSet c) { VariableCapture::clearsContent(n, c) } +/** + * Holds if values stored inside content `c` are cleared at node `n`. For example, + * any value stored inside `f` is cleared at the pre-update node associated with `x` + * in `x.f = newValue`. + */ +predicate clearsContent(Node n, ContentSet c) { + exists(Content cont | + clearsCont(n, cont) and + c.isSingleton(cont) + ) + or + fieldOrPropertyStore(_, c, _, n.asExpr(), true) + or + fieldOrPropertyStore(_, c, _, n.(ObjectInitializerNode).getInitializer(), false) + or + FlowSummaryImpl::Private::Steps::summaryClearsContent(n.(FlowSummaryNode).getSummaryNode(), c) + or + exists(WithExpr we, ObjectInitializer oi, FieldOrProperty f | + oi = we.getInitializer() and + n.asExpr() = oi and + f = oi.getAMemberInitializer().getInitializedMember() and + c = f.getContentSet() + ) +} + /** * Holds if the value that is being tracked is expected to be stored inside content `c` * at node `n`. @@ -2449,7 +2486,7 @@ predicate clearsContent(Node n, ContentSet c) { predicate expectsContent(Node n, ContentSet c) { FlowSummaryImpl::Private::Steps::summaryExpectsContent(n.(FlowSummaryNode).getSummaryNode(), c) or - n.asExpr() instanceof SpreadElementExpr and c instanceof ElementContent + n.asExpr() instanceof SpreadElementExpr and c.isElement() } class NodeRegion instanceof ControlFlow::BasicBlock { @@ -3038,6 +3075,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 } @@ -3050,8 +3088,3 @@ abstract class SyntheticField extends string { /** Gets the type of this synthetic field. */ Type getType() { result instanceof ObjectType } } - -/** - * Holds if the the content `c` is a container. - */ -predicate containerContent(DataFlow::Content c) { c instanceof DataFlow::ElementContent } 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 4d1dc25f6e9..df876aae455 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll @@ -267,22 +267,82 @@ class CapturedVariableContent extends Content, TCapturedVariableContent { override Location getLocation() { result = v.getLocation() } } +/** Holds if property `p1` overrides or implements source declaration property `p2`. */ +private predicate overridesOrImplementsSourceDecl(Property p1, Property p2) { + p1.getOverridee*().getUnboundDeclaration() = p2 + or + p1.getAnUltimateImplementee().getUnboundDeclaration() = p2 +} + /** * An entity that represents a set of `Content`s. * * The set may be interpreted differently depending on whether it is * stored into (`getAStoreContent`) or read from (`getAReadContent`). */ -class ContentSet instanceof Content { +class ContentSet extends TContentSet { + /** Holds if this content set is the singleton `{c}`. */ + predicate isSingleton(Content c) { this = TSingletonContent(c) } + + /** + * Holds if this content set represents the property `p`. + * + * + * For `getAReadContent`, this set represents all properties that may + * (reflexively and transitively) override/implement `p` (or vice versa). + */ + predicate isProperty(Property p) { this = TPropertyContentSet(p) } + + /** Holds if this content set represent the field `f`. */ + predicate isField(Field f) { this.isSingleton(TFieldContent(f)) } + + /** Holds if this content set represents an element in a collection. */ + predicate isElement() { this.isSingleton(TElementContent()) } + /** Gets a content that may be stored into when storing into this set. */ - Content getAStoreContent() { result = this } + Content getAStoreContent() { + this.isSingleton(result) + or + this.isProperty(result.(PropertyContent).getProperty()) + } /** Gets a content that may be read from when reading from this set. */ - Content getAReadContent() { result = this } + Content getAReadContent() { + this.isSingleton(result) + or + exists(Property p1, Property p2 | + this.isProperty(p1) and + p2 = result.(PropertyContent).getProperty() + | + overridesOrImplementsSourceDecl(p2, p1) + or + overridesOrImplementsSourceDecl(p1, p2) + ) + } /** Gets a textual representation of this content set. */ - string toString() { result = super.toString() } + string toString() { + exists(Content c | + this.isSingleton(c) and + result = c.toString() + ) + or + exists(Property p | + this.isProperty(p) and + result = "property " + p.getName() + ) + } /** Gets the location of this content set. */ - Location getLocation() { result = super.getLocation() } + Location getLocation() { + exists(Content c | + this.isSingleton(c) and + result = c.getLocation() + ) + or + exists(Property p | + this.isProperty(p) and + result = p.getLocation() + ) + } } 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..c2d3da0607a 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll @@ -431,6 +431,17 @@ Declaration interpretElement( ) } +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/FlowSummaryImpl.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll index d70f66f2cbe..d777566a336 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll @@ -46,7 +46,7 @@ module Input implements InputSig result = "delegate-self" } - string encodeContent(ContentSet c, string arg) { + private string encodeCont(Content c, string arg) { c = TElementContent() and result = "Element" and arg = "" or exists(Field f, string qualifier, string name | @@ -56,27 +56,34 @@ module Input implements InputSig result = "Field" ) or - exists(Property p, string qualifier, string name | - c = TPropertyContent(p) and - p.hasFullyQualifiedName(qualifier, name) and - arg = getQualifiedName(qualifier, name) and - result = "Property" - ) - or exists(SyntheticField f | c = TSyntheticFieldContent(f) and result = "SyntheticField" and arg = f ) } + string encodeContent(ContentSet c, string arg) { + exists(Content cont | + c.isSingleton(cont) and + result = encodeCont(cont, arg) + ) + or + exists(Property p, string qualifier, string name | + c.isProperty(p) and + p.hasFullyQualifiedName(qualifier, name) and + arg = getQualifiedName(qualifier, name) and + result = "Property" + ) + } + string encodeWithoutContent(ContentSet c, string arg) { result = "WithoutElement" and - c = TElementContent() and + c.isElement() and arg = "" } string encodeWithContent(ContentSet c, string arg) { result = "WithElement" and - c = TElementContent() and + c.isElement() and arg = "" } @@ -103,12 +110,10 @@ private module TypesInput implements Impl::Private::TypesInputSig { result.asGvnType() = Gvn::getGlobalValueNumber(any(ObjectType t)) } - DataFlowType getContentType(ContentSet c) { + private DataFlowType getContType(Content c) { exists(Type t | result.asGvnType() = Gvn::getGlobalValueNumber(t) | t = c.(FieldContent).getField().getType() or - t = c.(PropertyContent).getProperty().getType() - or t = c.(SyntheticFieldContent).getField().getType() or c instanceof ElementContent and @@ -116,6 +121,17 @@ private module TypesInput implements Impl::Private::TypesInputSig { ) } + DataFlowType getContentType(ContentSet c) { + exists(Content cont | + c.isSingleton(cont) and + result = getContType(cont) + ) + or + exists(Property p | + c.isProperty(p) and result.asGvnType() = Gvn::getGlobalValueNumber(p.getType()) + ) + } + DataFlowType getParameterType(Impl::Public::SummarizedCallable c, ParameterPosition pos) { exists(Type t | result.asGvnType() = Gvn::getGlobalValueNumber(t) | exists(int i | @@ -311,17 +327,16 @@ module Private { } /** Gets a summary component that represents an element in a collection. */ - SummaryComponent element() { result = content(any(DataFlow::ElementContent c)) } + SummaryComponent element() { result = content(any(ContentSet cs | cs.isElement())) } /** Gets a summary component for property `p`. */ SummaryComponent property(Property p) { - result = - content(any(DataFlow::PropertyContent c | c.getProperty() = p.getUnboundDeclaration())) + result = content(any(DataFlow::ContentSet c | c.isProperty(p.getUnboundDeclaration()))) } /** Gets a summary component for field `f`. */ SummaryComponent field(Field f) { - result = content(any(DataFlow::FieldContent c | c.getField() = f.getUnboundDeclaration())) + result = content(any(DataFlow::ContentSet c | c.isField(f.getUnboundDeclaration()))) } /** Gets a summary component that represents the return value of a call. */ 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..d4f0625be88 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll @@ -108,7 +108,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 + ) } /** diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll index 11c47c1d37e..25de2681862 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll @@ -122,22 +122,22 @@ private module Cached { FlowSummaryImpl::Private::Steps::summaryThroughStepTaint(nodeFrom, nodeTo, _) or // Taint collection by adding a tainted element - exists(DataFlow::ElementContent c | + exists(DataFlow::ContentSet c | c.isElement() | storeStep(nodeFrom, c, nodeTo) or FlowSummaryImpl::Private::Steps::summarySetterStep(nodeFrom, c, nodeTo, _) ) or - exists(DataFlow::Content c | + exists(DataFlow::ContentSet c | readStep(nodeFrom, c, nodeTo) or FlowSummaryImpl::Private::Steps::summaryGetterStep(nodeFrom, c, nodeTo, _) | // Taint members - c = any(TaintedMember m).(FieldOrProperty).getContent() + c = any(TaintedMember m).(FieldOrProperty).getContentSet() or // Read from a tainted collection - c = TElementContent() + c.isElement() ) ) } @@ -152,12 +152,12 @@ private module Cached { localTaintStepCommon(nodeFrom, nodeTo) or // Taint members - readStep(nodeFrom, any(TaintedMember m).(FieldOrProperty).getContent(), nodeTo) + readStep(nodeFrom, any(TaintedMember m).(FieldOrProperty).getContentSet(), nodeTo) or // Although flow through collections is modeled precisely using stores/reads, we still // allow flow out of a _tainted_ collection. This is needed in order to support taint- // tracking configurations where the source is a collection - readStep(nodeFrom, TElementContent(), nodeTo) + readStep(nodeFrom, any(DataFlow::ContentSet c | c.isElement()), nodeTo) or nodeTo = nodeFrom.(DataFlow::NonLocalJumpNode).getAJumpSuccessor(false) ) and diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/EntityFramework.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/EntityFramework.qll index deeccdbf020..9bf516bc876 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/EntityFramework.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/EntityFramework.qll @@ -282,12 +282,12 @@ module EntityFramework { * If `t2` is a column type, `c2` will be included in the model (see * https://docs.microsoft.com/en-us/ef/core/modeling/entity-types?tabs=data-annotations). */ - private predicate step(Content c1, Type t1, Content c2, Type t2, int dist) { + private predicate step(ContentSet c1, Type t1, ContentSet c2, Type t2, int dist) { exists(Property p1 | p1 = this.getADbSetProperty(t2) and - c1.(PropertyContent).getProperty() = p1 and + c1.isProperty(p1) and t1 = p1.getType() and - c2 instanceof ElementContent and + c2.isElement() and dist = 0 ) or @@ -299,17 +299,17 @@ module EntityFramework { exists(Property p2 | p2.getDeclaringType().(Class) = t1 and not isColumnType(t1) and - c2.(PropertyContent).getProperty() = p2 and + c2.isProperty(p2) and t2 = p2.getType() and not isNotMapped(p2) ) or exists(ConstructedInterface ci | - c1 instanceof PropertyContent and + c1.isProperty(_) and t1.(ValueOrRefType).getABaseType*() = ci and not t1 instanceof StringType and ci.getUnboundDeclaration() instanceof SystemCollectionsGenericIEnumerableTInterface and - c2 instanceof ElementContent and + c2.isElement() and t2 = ci.getTypeArgument(0) ) ) @@ -340,16 +340,16 @@ module EntityFramework { * ``` */ Property getAColumnProperty(int dist) { - exists(PropertyContent c, Type t | + exists(ContentSet c, Type t | this.step(_, _, c, t, dist) and - c.getProperty() = result and + c.isProperty(result) and isColumnType(t) ) } - private predicate stepRev(Content c1, Type t1, Content c2, Type t2, int dist) { + private predicate stepRev(ContentSet c1, Type t1, ContentSet c2, Type t2, int dist) { this.step(c1, t1, c2, t2, dist) and - c2.(PropertyContent).getProperty() = this.getAColumnProperty(dist) + c2.isProperty(this.getAColumnProperty(dist)) or this.stepRev(c2, t2, _, _, dist + 1) and this.step(c1, t1, c2, t2, dist) @@ -364,13 +364,13 @@ module EntityFramework { /** Holds if component stack `head :: tail` is required for the input specification. */ predicate requiresComponentStackIn( - Content head, Type headType, SummaryComponentStack tail, int dist + ContentSet head, Type headType, SummaryComponentStack tail, int dist ) { tail = SummaryComponentStack::qualifier() and this.stepRev(head, headType, _, _, 0) and dist = -1 or - exists(Content tailHead, Type tailType, SummaryComponentStack tailTail | + exists(ContentSet tailHead, Type tailType, SummaryComponentStack tailTail | this.requiresComponentStackIn(tailHead, tailType, tailTail, dist - 1) and tail = SummaryComponentStack::push(SummaryComponent::content(tailHead), tailTail) and this.stepRev(tailHead, tailType, head, headType, dist) @@ -379,18 +379,18 @@ module EntityFramework { /** Holds if component stack `head :: tail` is required for the output specification. */ predicate requiresComponentStackOut( - Content head, Type headType, SummaryComponentStack tail, int dist, + ContentSet head, Type headType, SummaryComponentStack tail, int dist, DbContextClassSetProperty dbSetProp ) { - exists(PropertyContent c1 | + exists(ContentSet c1 | dbSetProp = this.getADbSetProperty(headType) and this.stepRev(c1, _, head, headType, 0) and - c1.getProperty() = dbSetProp and + c1.isProperty(dbSetProp) and tail = SummaryComponentStack::return() and dist = 0 ) or - exists(Content tailHead, SummaryComponentStack tailTail, Type tailType | + exists(ContentSet tailHead, SummaryComponentStack tailTail, Type tailType | this.requiresComponentStackOut(tailHead, tailType, tailTail, dist - 1, dbSetProp) and tail = SummaryComponentStack::push(SummaryComponent::content(tailHead), tailTail) and this.stepRev(tailHead, tailType, head, headType, dist) @@ -402,9 +402,9 @@ module EntityFramework { */ pragma[noinline] predicate input(SummaryComponentStack input, Property mapped) { - exists(PropertyContent head, SummaryComponentStack tail | + exists(ContentSet head, SummaryComponentStack tail | this.requiresComponentStackIn(head, _, tail, _) and - head.getProperty() = mapped and + head.isProperty(mapped) and mapped = this.getAColumnProperty(_) and input = SummaryComponentStack::push(SummaryComponent::content(head), tail) ) @@ -418,9 +418,9 @@ module EntityFramework { private predicate output( SummaryComponentStack output, Property mapped, DbContextClassSetProperty dbSet ) { - exists(PropertyContent head, SummaryComponentStack tail | + exists(ContentSet head, SummaryComponentStack tail | this.requiresComponentStackOut(head, _, tail, _, dbSet) and - head.getProperty() = mapped and + head.isProperty(mapped) and mapped = this.getAColumnProperty(_) and output = SummaryComponentStack::push(SummaryComponent::content(head), tail) ) @@ -505,7 +505,7 @@ module EntityFramework { private class DbContextSaveChangesRequiredSummaryComponentStack extends RequiredSummaryComponentStack { override predicate required(SummaryComponent head, SummaryComponentStack tail) { - exists(Content c | head = SummaryComponent::content(c) | + exists(ContentSet c | head = SummaryComponent::content(c) | any(DbContextClass cls).requiresComponentStackIn(c, _, tail, _) or any(DbContextClass cls).requiresComponentStackOut(c, _, tail, _, _) diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/microsoft/AspNetCore.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/microsoft/AspNetCore.qll index 08ff4df55cb..350465052d1 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/microsoft/AspNetCore.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/microsoft/AspNetCore.qll @@ -205,7 +205,6 @@ class MicrosoftAspNetCoreMvcController extends Class { ) ) and this.isPublic() and - (not this.isAbstract() or this instanceof MicrosoftAspNetCoreMvcControllerBaseClass) and not this instanceof Generic and ( this.getABaseType*() instanceof MicrosoftAspNetCoreMvcControllerBaseClass 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/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index bd25f8118dd..1b1d04129e2 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,3 +1,10 @@ +## 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/Telemetry/ExtractorInformation.ql b/csharp/ql/src/Telemetry/ExtractorInformation.ql index c2d80f7c768..6fdaf9ca22d 100644 --- a/csharp/ql/src/Telemetry/ExtractorInformation.ql +++ b/csharp/ql/src/Telemetry/ExtractorInformation.ql @@ -12,6 +12,7 @@ import DatabaseQuality predicate compilationInfo(string key, float value) { not key.matches("Compiler diagnostic count for%") and + not key.matches("Extractor message count for group%") and exists(Compilation c, string infoKey, string infoValue | infoValue = c.getInfo(infoKey) | key = infoKey and value = infoValue.toFloat() @@ -22,6 +23,16 @@ predicate compilationInfo(string key, float value) { ) } +predicate compilerDiagnostics(string key, int value) { + key.matches("Compiler diagnostic count for%") and + strictsum(Compilation c | | c.getInfo(key).toInt()) = value +} + +predicate extractorMessages(string key, int value) { + key.matches("Extractor message count for group%") and + strictsum(Compilation c | | c.getInfo(key).toInt()) = value +} + predicate fileCount(string key, int value) { key = "Number of files" and value = strictcount(File f) @@ -140,6 +151,8 @@ from string key, float value where ( compilationInfo(key, value) or + compilerDiagnostics(key, value) or + extractorMessages(key, value) or fileCount(key, value) or fileCountByExtension(key, value) or totalNumberOfLines(key, value) or 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/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index 42da17b3841..8033d980afa 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.6 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..4f1c93fc25b 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.7-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 b8bc01f0800..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) } } @@ -50,7 +68,7 @@ module Printing = ModelPrinting; /** * Holds if `c` is a relevant content kind, where the underlying type is relevant. */ -private predicate isRelevantTypeInContent(DataFlow::Content c) { +private predicate isRelevantTypeInContent(DataFlow::ContentSet c) { isRelevantType(getUnderlyingContentType(c)) } @@ -58,24 +76,23 @@ private predicate isRelevantTypeInContent(DataFlow::Content c) { * Holds if data can flow from `node1` to `node2` either via a read or a write of an intermediate field `f`. */ private predicate isRelevantTaintStep(DataFlow::Node node1, DataFlow::Node node2) { - exists(DataFlow::Content f | + exists(DataFlow::ContentSet f | DataFlowPrivate::readStep(node1, f, node2) and // Partially restrict the content types used for intermediate steps. (not exists(getUnderlyingContentType(f)) or isRelevantTypeInContent(f)) ) or - exists(DataFlow::Content f | DataFlowPrivate::storeStep(node1, f, node2) | - DataFlowPrivate::containerContent(f) - ) + exists(DataFlow::ContentSet f | DataFlowPrivate::storeStep(node1, f, node2) | containerContent(f)) } /** * 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::Content c) { +pragma[nomagic] +private predicate isRelevantContent0(DataFlow::ContentSet c) { isRelevantTypeInContent(c) or - DataFlowPrivate::containerContent(c) + containerContent(c) } /** @@ -87,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,9 +197,9 @@ module PropagateFlowConfig implements DataFlow::StateConfigSig { predicate isAdditionalFlowStep( DataFlow::Node node1, FlowState state1, DataFlow::Node node2, FlowState state2 ) { - exists(DataFlow::Content c | - DataFlowImplCommon::store(node1, c, node2, _, _) and - isRelevantContent(c) and + exists(DataFlow::ContentSet c | + DataFlowImplCommon::store(node1, c.getAStoreContent(), node2, _, _) and + isRelevantContent0(c) and ( state1 instanceof TaintRead and state2.(TaintStore).getStep() = 1 or @@ -180,9 +207,9 @@ module PropagateFlowConfig implements DataFlow::StateConfigSig { ) ) or - exists(DataFlow::Content c | + exists(DataFlow::ContentSet c | DataFlowPrivate::readStep(node1, c, node2) and - isRelevantContent(c) and + isRelevantContent0(c) and state1.(TaintRead).getStep() + 1 = state2.(TaintRead).getStep() ) } @@ -196,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) ) } @@ -254,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 c442261d780..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<>`. */ @@ -210,10 +215,24 @@ predicate isRelevantType(CS::Type t) { /** * Gets the underlying type of the content `c`. */ -CS::Type getUnderlyingContentType(DataFlow::Content c) { +private CS::Type getUnderlyingContType(DataFlow::Content c) { result = c.(DataFlow::FieldContent).getField().getType() or - result = c.(DataFlow::SyntheticFieldContent).getField().getType() or - result = c.(DataFlow::PropertyContent).getProperty().getType() + result = c.(DataFlow::SyntheticFieldContent).getField().getType() +} + +/** + * Gets the underlying type of the content `c`. + */ +CS::Type getUnderlyingContentType(DataFlow::ContentSet c) { + exists(DataFlow::Content cont | + c.isSingleton(cont) and + result = getUnderlyingContType(cont) + ) + or + exists(CS::Property p | + c.isProperty(p) and + result = p.getType() + ) } /** @@ -227,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) } /** @@ -325,3 +364,49 @@ predicate isRelevantSinkKind(string kind) { any() } */ bindingset[kind] 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/dataflow/collections/CollectionFlow.expected b/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.expected index aae5dff536d..dfc46ac8071 100644 --- a/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/collections/CollectionFlow.expected @@ -52,12 +52,10 @@ edges | CollectionFlow.cs:30:69:30:72 | access to parameter dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:69:30:79 | access to property Values : ICollection [element] : A | provenance | MaD:2 | | CollectionFlow.cs:30:69:30:72 | access to parameter dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:69:30:79 | access to property Values : ICollection [element] : A | provenance | MaD:8 | | CollectionFlow.cs:30:69:30:79 | access to property Values : ICollection [element] : A | CollectionFlow.cs:30:69:30:87 | call to method First : A | provenance | MaD:16 | -| CollectionFlow.cs:30:69:30:79 | access to property Values : ICollection [element] : A | CollectionFlow.cs:30:69:30:87 | call to method First : A | provenance | MaD:16 | | CollectionFlow.cs:32:58:32:61 | dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:67:32:70 | access to parameter dict : Dictionary [element, property Key] : A | provenance | | | CollectionFlow.cs:32:67:32:70 | access to parameter dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:67:32:75 | access to property Keys : ICollection [element] : A | provenance | MaD:1 | | CollectionFlow.cs:32:67:32:70 | access to parameter dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:67:32:75 | access to property Keys : ICollection [element] : A | provenance | MaD:7 | | CollectionFlow.cs:32:67:32:75 | access to property Keys : ICollection [element] : A | CollectionFlow.cs:32:67:32:83 | call to method First : A | provenance | MaD:16 | -| CollectionFlow.cs:32:67:32:75 | access to property Keys : ICollection [element] : A | CollectionFlow.cs:32:67:32:83 | call to method First : A | provenance | MaD:16 | | CollectionFlow.cs:34:57:34:60 | dict : Dictionary [element, property Key] : A | CollectionFlow.cs:34:66:34:69 | access to parameter dict : Dictionary [element, property Key] : A | provenance | | | CollectionFlow.cs:34:66:34:69 | access to parameter dict : Dictionary [element, property Key] : A | CollectionFlow.cs:34:66:34:77 | call to method First> : KeyValuePair [property Key] : A | provenance | MaD:16 | | CollectionFlow.cs:34:66:34:77 | call to method First> : KeyValuePair [property Key] : A | CollectionFlow.cs:34:66:34:81 | access to property Key : A | provenance | | @@ -378,14 +376,10 @@ nodes | CollectionFlow.cs:30:60:30:63 | dict : Dictionary [element, property Value] : A | semmle.label | dict : Dictionary [element, property Value] : A | | CollectionFlow.cs:30:69:30:72 | access to parameter dict : Dictionary [element, property Value] : A | semmle.label | access to parameter dict : Dictionary [element, property Value] : A | | CollectionFlow.cs:30:69:30:79 | access to property Values : ICollection [element] : A | semmle.label | access to property Values : ICollection [element] : A | -| CollectionFlow.cs:30:69:30:79 | access to property Values : ICollection [element] : A | semmle.label | access to property Values : ICollection [element] : A | -| CollectionFlow.cs:30:69:30:87 | call to method First : A | semmle.label | call to method First : A | | CollectionFlow.cs:30:69:30:87 | call to method First : A | semmle.label | call to method First : A | | CollectionFlow.cs:32:58:32:61 | dict : Dictionary [element, property Key] : A | semmle.label | dict : Dictionary [element, property Key] : A | | CollectionFlow.cs:32:67:32:70 | access to parameter dict : Dictionary [element, property Key] : A | semmle.label | access to parameter dict : Dictionary [element, property Key] : A | | CollectionFlow.cs:32:67:32:75 | access to property Keys : ICollection [element] : A | semmle.label | access to property Keys : ICollection [element] : A | -| CollectionFlow.cs:32:67:32:75 | access to property Keys : ICollection [element] : A | semmle.label | access to property Keys : ICollection [element] : A | -| CollectionFlow.cs:32:67:32:83 | call to method First : A | semmle.label | call to method First : A | | CollectionFlow.cs:32:67:32:83 | call to method First : A | semmle.label | call to method First : A | | CollectionFlow.cs:34:57:34:60 | dict : Dictionary [element, property Key] : A | semmle.label | dict : Dictionary [element, property Key] : A | | CollectionFlow.cs:34:66:34:69 | access to parameter dict : Dictionary [element, property Key] : A | semmle.label | access to parameter dict : Dictionary [element, property Key] : A | @@ -671,20 +665,15 @@ subpaths | CollectionFlow.cs:156:28:156:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:58:26:61 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:67:26:73 | access to indexer : A | CollectionFlow.cs:156:14:156:32 | call to method DictIndexZero | | CollectionFlow.cs:157:29:157:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:59:28:62 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:68:28:85 | access to property Value : A | CollectionFlow.cs:157:14:157:33 | call to method DictFirstValue | | CollectionFlow.cs:158:30:158:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:60:30:63 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:69:30:87 | call to method First : A | CollectionFlow.cs:158:14:158:34 | call to method DictValuesFirst | -| CollectionFlow.cs:158:30:158:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:60:30:63 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:69:30:87 | call to method First : A | CollectionFlow.cs:158:14:158:34 | call to method DictValuesFirst | | CollectionFlow.cs:178:28:178:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:58:26:61 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:67:26:73 | access to indexer : A | CollectionFlow.cs:178:14:178:32 | call to method DictIndexZero | | CollectionFlow.cs:179:29:179:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:59:28:62 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:68:28:85 | access to property Value : A | CollectionFlow.cs:179:14:179:33 | call to method DictFirstValue | | CollectionFlow.cs:180:30:180:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:60:30:63 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:69:30:87 | call to method First : A | CollectionFlow.cs:180:14:180:34 | call to method DictValuesFirst | -| CollectionFlow.cs:180:30:180:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:60:30:63 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:69:30:87 | call to method First : A | CollectionFlow.cs:180:14:180:34 | call to method DictValuesFirst | | CollectionFlow.cs:199:28:199:31 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:58:26:61 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:26:67:26:73 | access to indexer : A | CollectionFlow.cs:199:14:199:32 | call to method DictIndexZero | | CollectionFlow.cs:200:29:200:32 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:59:28:62 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:28:68:28:85 | access to property Value : A | CollectionFlow.cs:200:14:200:33 | call to method DictFirstValue | | CollectionFlow.cs:201:30:201:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:60:30:63 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:69:30:87 | call to method First : A | CollectionFlow.cs:201:14:201:34 | call to method DictValuesFirst | -| CollectionFlow.cs:201:30:201:33 | access to local variable dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:60:30:63 | dict : Dictionary [element, property Value] : A | CollectionFlow.cs:30:69:30:87 | call to method First : A | CollectionFlow.cs:201:14:201:34 | call to method DictValuesFirst | -| CollectionFlow.cs:221:28:221:31 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:58:32:61 | dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:67:32:83 | call to method First : A | CollectionFlow.cs:221:14:221:32 | call to method DictKeysFirst | | CollectionFlow.cs:221:28:221:31 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:58:32:61 | dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:67:32:83 | call to method First : A | CollectionFlow.cs:221:14:221:32 | call to method DictKeysFirst | | CollectionFlow.cs:222:27:222:30 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:34:57:34:60 | dict : Dictionary [element, property Key] : A | CollectionFlow.cs:34:66:34:81 | access to property Key : A | CollectionFlow.cs:222:14:222:31 | call to method DictFirstKey | | CollectionFlow.cs:240:28:240:31 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:58:32:61 | dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:67:32:83 | call to method First : A | CollectionFlow.cs:240:14:240:32 | call to method DictKeysFirst | -| CollectionFlow.cs:240:28:240:31 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:58:32:61 | dict : Dictionary [element, property Key] : A | CollectionFlow.cs:32:67:32:83 | call to method First : A | CollectionFlow.cs:240:14:240:32 | call to method DictKeysFirst | | CollectionFlow.cs:241:27:241:30 | access to local variable dict : Dictionary [element, property Key] : A | CollectionFlow.cs:34:57:34:60 | dict : Dictionary [element, property Key] : A | CollectionFlow.cs:34:66:34:81 | access to property Key : A | CollectionFlow.cs:241:14:241:31 | call to method DictFirstKey | | CollectionFlow.cs:334:23:334:23 | access to local variable a : A | CollectionFlow.cs:328:32:328:38 | element : A | CollectionFlow.cs:328:23:328:27 | array [Return] : A[] [element] : A | CollectionFlow.cs:334:18:334:20 | [post] access to local variable as : A[] [element] : A | | CollectionFlow.cs:337:20:337:22 | access to local variable as : A[] [element] : A | CollectionFlow.cs:22:34:22:35 | ts : A[] [element] : A | CollectionFlow.cs:22:41:22:45 | access to array element : A | CollectionFlow.cs:337:14:337:23 | call to method First | 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/steps.ql b/csharp/ql/test/library-tests/dataflow/external-models/steps.ql index 05d96df8f32..aaeda41c163 100644 --- a/csharp/ql/test/library-tests/dataflow/external-models/steps.ql +++ b/csharp/ql/test/library-tests/dataflow/external-models/steps.ql @@ -16,10 +16,10 @@ query predicate summaryThroughStep( preservesValue = false } -query predicate summaryGetterStep(DataFlow::Node arg, DataFlow::Node out, Content c) { +query predicate summaryGetterStep(DataFlow::Node arg, DataFlow::Node out, ContentSet c) { FlowSummaryImpl::Private::Steps::summaryGetterStep(arg, c, out, _) } -query predicate summarySetterStep(DataFlow::Node arg, DataFlow::Node out, Content c) { +query predicate summarySetterStep(DataFlow::Node arg, DataFlow::Node out, ContentSet c) { FlowSummaryImpl::Private::Steps::summarySetterStep(arg, c, out, _) } diff --git a/csharp/ql/test/library-tests/dataflow/flowsources/aspremote/AspRemoteFlowSource.cs b/csharp/ql/test/library-tests/dataflow/flowsources/aspremote/AspRemoteFlowSource.cs index 7f110e5c6fd..176f95e4a89 100644 --- a/csharp/ql/test/library-tests/dataflow/flowsources/aspremote/AspRemoteFlowSource.cs +++ b/csharp/ql/test/library-tests/dataflow/flowsources/aspremote/AspRemoteFlowSource.cs @@ -58,4 +58,9 @@ namespace Testing app.Run(); } } -} \ No newline at end of file + + public abstract class AbstractTestController : Controller + { + public void MyActionMethod(string param) { } + } +} diff --git a/csharp/ql/test/library-tests/dataflow/flowsources/aspremote/aspRemoteFlowSource.expected b/csharp/ql/test/library-tests/dataflow/flowsources/aspremote/aspRemoteFlowSource.expected index 199ed69f28f..a7442a80839 100644 --- a/csharp/ql/test/library-tests/dataflow/flowsources/aspremote/aspRemoteFlowSource.expected +++ b/csharp/ql/test/library-tests/dataflow/flowsources/aspremote/aspRemoteFlowSource.expected @@ -12,3 +12,4 @@ remoteFlowSources | AspRemoteFlowSource.cs:53:63:53:73 | mapPutParam | | AspRemoteFlowSource.cs:54:69:54:82 | mapDeleteParam | | AspRemoteFlowSource.cs:56:41:56:44 | item | +| AspRemoteFlowSource.cs:64:43:64:47 | param | diff --git a/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected b/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected index 24693500fbf..4bf73387c5d 100644 --- a/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected +++ b/csharp/ql/test/library-tests/dataflow/global/TaintTrackingPath.expected @@ -301,14 +301,22 @@ edges | GlobalDataFlow.cs:89:13:89:18 | access to local variable sink17 : String | GlobalDataFlow.cs:90:15:90:20 | access to local variable sink17 | provenance | | | GlobalDataFlow.cs:89:22:89:110 | call to method Aggregate : String | GlobalDataFlow.cs:89:13:89:18 | access to local variable sink17 : String | provenance | | | GlobalDataFlow.cs:89:23:89:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:89:22:89:110 | call to method Aggregate : String | provenance | MaD:2 | +| GlobalDataFlow.cs:89:23:89:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:89:89:89:89 | s : String | provenance | MaD:2 | +| GlobalDataFlow.cs:89:23:89:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:89:104:89:104 | x : String | provenance | MaD:2 | | GlobalDataFlow.cs:89:57:89:66 | { ..., ... } : null [element] : String | GlobalDataFlow.cs:89:23:89:66 | (...) ... : null [element] : String | provenance | | | GlobalDataFlow.cs:89:59:89:64 | access to local variable sink14 : String | GlobalDataFlow.cs:89:57:89:66 | { ..., ... } : null [element] : String | provenance | | +| GlobalDataFlow.cs:89:89:89:89 | s : String | GlobalDataFlow.cs:89:95:89:101 | ... + ... : String | provenance | | +| GlobalDataFlow.cs:89:104:89:104 | x : String | GlobalDataFlow.cs:89:109:89:109 | access to parameter x : String | provenance | | | GlobalDataFlow.cs:91:13:91:18 | access to local variable sink18 : String | GlobalDataFlow.cs:92:15:92:20 | access to local variable sink18 | provenance | | | GlobalDataFlow.cs:91:13:91:18 | access to local variable sink18 : String | GlobalDataFlow.cs:94:24:94:29 | access to local variable sink18 : String | provenance | | | GlobalDataFlow.cs:91:13:91:18 | access to local variable sink18 : String | GlobalDataFlow.cs:97:23:97:28 | access to local variable sink18 : String | provenance | | | GlobalDataFlow.cs:91:13:91:18 | access to local variable sink18 : String | GlobalDataFlow.cs:100:24:100:29 | access to local variable sink18 : String | provenance | | | GlobalDataFlow.cs:91:22:91:110 | call to method Aggregate : String | GlobalDataFlow.cs:91:13:91:18 | access to local variable sink18 : String | provenance | | | GlobalDataFlow.cs:91:75:91:80 | access to local variable sink14 : String | GlobalDataFlow.cs:91:22:91:110 | call to method Aggregate : String | provenance | MaD:3 | +| GlobalDataFlow.cs:91:75:91:80 | access to local variable sink14 : String | GlobalDataFlow.cs:91:84:91:86 | acc : String | provenance | MaD:3 | +| GlobalDataFlow.cs:91:75:91:80 | access to local variable sink14 : String | GlobalDataFlow.cs:91:104:91:104 | x : String | provenance | MaD:3 | +| GlobalDataFlow.cs:91:84:91:86 | acc : String | GlobalDataFlow.cs:91:95:91:101 | ... + ... : String | provenance | | +| GlobalDataFlow.cs:91:104:91:104 | x : String | GlobalDataFlow.cs:91:109:91:109 | access to parameter x : String | provenance | | | GlobalDataFlow.cs:94:24:94:29 | access to local variable sink18 : String | GlobalDataFlow.cs:94:36:94:41 | access to local variable sink21 : Int32 | provenance | MaD:22 | | GlobalDataFlow.cs:94:36:94:41 | access to local variable sink21 : Int32 | GlobalDataFlow.cs:95:15:95:20 | access to local variable sink21 | provenance | | | GlobalDataFlow.cs:97:23:97:28 | access to local variable sink18 : String | GlobalDataFlow.cs:97:35:97:40 | access to local variable sink22 : Boolean | provenance | MaD:20 | @@ -788,10 +796,18 @@ nodes | GlobalDataFlow.cs:89:23:89:66 | (...) ... : null [element] : String | semmle.label | (...) ... : null [element] : String | | GlobalDataFlow.cs:89:57:89:66 | { ..., ... } : null [element] : String | semmle.label | { ..., ... } : null [element] : String | | GlobalDataFlow.cs:89:59:89:64 | access to local variable sink14 : String | semmle.label | access to local variable sink14 : String | +| GlobalDataFlow.cs:89:89:89:89 | s : String | semmle.label | s : String | +| GlobalDataFlow.cs:89:95:89:101 | ... + ... : String | semmle.label | ... + ... : String | +| GlobalDataFlow.cs:89:104:89:104 | x : String | semmle.label | x : String | +| GlobalDataFlow.cs:89:109:89:109 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:90:15:90:20 | access to local variable sink17 | semmle.label | access to local variable sink17 | | GlobalDataFlow.cs:91:13:91:18 | access to local variable sink18 : String | semmle.label | access to local variable sink18 : String | | GlobalDataFlow.cs:91:22:91:110 | call to method Aggregate : String | semmle.label | call to method Aggregate : String | | GlobalDataFlow.cs:91:75:91:80 | access to local variable sink14 : String | semmle.label | access to local variable sink14 : String | +| GlobalDataFlow.cs:91:84:91:86 | acc : String | semmle.label | acc : String | +| GlobalDataFlow.cs:91:95:91:101 | ... + ... : String | semmle.label | ... + ... : String | +| GlobalDataFlow.cs:91:104:91:104 | x : String | semmle.label | x : String | +| GlobalDataFlow.cs:91:109:91:109 | access to parameter x : String | semmle.label | access to parameter x : String | | GlobalDataFlow.cs:92:15:92:20 | access to local variable sink18 | semmle.label | access to local variable sink18 | | GlobalDataFlow.cs:94:24:94:29 | access to local variable sink18 : String | semmle.label | access to local variable sink18 : String | | GlobalDataFlow.cs:94:36:94:41 | access to local variable sink21 : Int32 | semmle.label | access to local variable sink21 : Int32 | @@ -1102,6 +1118,10 @@ subpaths | GlobalDataFlow.cs:83:23:83:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:315:31:315:40 | sinkParam8 : String | GlobalDataFlow.cs:318:16:318:25 | access to parameter sinkParam8 : String | GlobalDataFlow.cs:83:22:83:87 | call to method Select : IEnumerable [element] : String | | GlobalDataFlow.cs:85:23:85:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:85:118:85:118 | x : String | GlobalDataFlow.cs:85:127:85:127 | access to parameter x : String | GlobalDataFlow.cs:85:22:85:128 | call to method Zip : IEnumerable [element] : String | | GlobalDataFlow.cs:87:70:87:113 | (...) ... : null [element] : String | GlobalDataFlow.cs:87:121:87:121 | y : String | GlobalDataFlow.cs:87:127:87:127 | access to parameter y : String | GlobalDataFlow.cs:87:22:87:128 | call to method Zip : IEnumerable [element] : String | +| GlobalDataFlow.cs:89:23:89:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:89:89:89:89 | s : String | GlobalDataFlow.cs:89:95:89:101 | ... + ... : String | GlobalDataFlow.cs:89:22:89:110 | call to method Aggregate : String | +| GlobalDataFlow.cs:89:23:89:66 | (...) ... : null [element] : String | GlobalDataFlow.cs:89:104:89:104 | x : String | GlobalDataFlow.cs:89:109:89:109 | access to parameter x : String | GlobalDataFlow.cs:89:22:89:110 | call to method Aggregate : String | +| GlobalDataFlow.cs:91:75:91:80 | access to local variable sink14 : String | GlobalDataFlow.cs:91:84:91:86 | acc : String | GlobalDataFlow.cs:91:95:91:101 | ... + ... : String | GlobalDataFlow.cs:91:22:91:110 | call to method Aggregate : String | +| GlobalDataFlow.cs:91:75:91:80 | access to local variable sink14 : String | GlobalDataFlow.cs:91:104:91:104 | x : String | GlobalDataFlow.cs:91:109:91:109 | access to parameter x : String | GlobalDataFlow.cs:91:22:91:110 | call to method Aggregate : String | | GlobalDataFlow.cs:138:63:138:63 | access to parameter x : String | GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | GlobalDataFlow.cs:138:45:138:64 | call to method ApplyFunc : String | | GlobalDataFlow.cs:139:29:139:33 | access to local variable sink3 : String | GlobalDataFlow.cs:138:40:138:40 | x : String | GlobalDataFlow.cs:138:45:138:64 | call to method ApplyFunc : String | GlobalDataFlow.cs:139:21:139:34 | delegate call : String | | GlobalDataFlow.cs:147:39:147:43 | access to local variable sink4 : String | GlobalDataFlow.cs:387:46:387:46 | x : String | GlobalDataFlow.cs:389:16:389:19 | delegate call : String | GlobalDataFlow.cs:147:21:147:44 | call to method ApplyFunc : String | 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/frameworks/microsoft/AspNetCore.cs b/csharp/ql/test/library-tests/frameworks/microsoft/AspNetCore.cs index 78095254d09..bcf0c766f34 100644 --- a/csharp/ql/test/library-tests/frameworks/microsoft/AspNetCore.cs +++ b/csharp/ql/test/library-tests/frameworks/microsoft/AspNetCore.cs @@ -56,6 +56,15 @@ public class HomeController5 : HomeController4 } } +// is abstract +public abstract class HomeController6 : Controller +{ + public string Index() + { + return "This is Home Controller"; + } +} + // is not public internal class NotHomeController : Controller { @@ -65,17 +74,8 @@ internal class NotHomeController : Controller } } -// is abstract -public abstract class NotHomeController2 : Controller -{ - public string Index() - { - return "This is Home Controller"; - } -} - // contains generic parameters -public class NotHomeController3 : Controller +public class NotHomeController2 : Controller { public string Index() { @@ -85,7 +85,7 @@ public class NotHomeController3 : Controller // has [NonController] attribute [NonController] -public class NotHomeController4 : Controller +public class NotHomeController3 : Controller { public string Index() { @@ -94,10 +94,10 @@ public class NotHomeController4 : Controller } // derived from a class that has [NonController] attribute -public class NotController : NotHomeController4 +public class NotController : NotHomeController3 { public string Index() { return "This is Home Controller"; } -} \ No newline at end of file +} diff --git a/csharp/ql/test/library-tests/frameworks/microsoft/AspNetCore.expected b/csharp/ql/test/library-tests/frameworks/microsoft/AspNetCore.expected index c4c58957115..e9866698ccd 100644 --- a/csharp/ql/test/library-tests/frameworks/microsoft/AspNetCore.expected +++ b/csharp/ql/test/library-tests/frameworks/microsoft/AspNetCore.expected @@ -4,3 +4,4 @@ | AspNetCore.cs:32:14:32:28 | HomeController3 | | AspNetCore.cs:42:14:42:28 | HomeController4 | | AspNetCore.cs:51:14:51:28 | HomeController5 | +| AspNetCore.cs:60:23:60:37 | HomeController6 | diff --git a/csharp/ql/test/library-tests/partial/MethodIsPartial.expected b/csharp/ql/test/library-tests/partial/MethodIsPartial.expected index 8ee8f25b0c8..66f2dc7d3a0 100644 --- a/csharp/ql/test/library-tests/partial/MethodIsPartial.expected +++ b/csharp/ql/test/library-tests/partial/MethodIsPartial.expected @@ -1,6 +1,6 @@ -| Partial.cs:3:18:3:39 | PartialMethodWithBody1 | true | | Partial.cs:4:18:4:42 | PartialMethodWithoutBody1 | true | | Partial.cs:5:17:5:23 | Method2 | false | +| Partial.cs:10:18:10:39 | PartialMethodWithBody1 | true | | Partial.cs:11:17:11:23 | Method3 | false | | Partial.cs:16:18:16:42 | PartialMethodWithoutBody2 | true | | Partial.cs:17:17:17:23 | Method4 | false | diff --git a/csharp/ql/test/library-tests/partial/Partial1.expected b/csharp/ql/test/library-tests/partial/Partial1.expected index 722482cac4f..6830307e8e7 100644 --- a/csharp/ql/test/library-tests/partial/Partial1.expected +++ b/csharp/ql/test/library-tests/partial/Partial1.expected @@ -1,6 +1,6 @@ | Partial.cs:1:15:1:26 | TwoPartClass | -| Partial.cs:3:18:3:39 | PartialMethodWithBody1 | | Partial.cs:4:18:4:42 | PartialMethodWithoutBody1 | | Partial.cs:8:15:8:26 | TwoPartClass | +| Partial.cs:10:18:10:39 | PartialMethodWithBody1 | | Partial.cs:14:15:14:33 | OnePartPartialClass | | Partial.cs:16:18:16:42 | PartialMethodWithoutBody2 | diff --git a/csharp/ql/test/library-tests/partial/Partial2.expected b/csharp/ql/test/library-tests/partial/Partial2.expected index 6723b575fc7..de1327fe159 100644 --- a/csharp/ql/test/library-tests/partial/Partial2.expected +++ b/csharp/ql/test/library-tests/partial/Partial2.expected @@ -1,10 +1,10 @@ -| Partial.cs:1:15:1:26 | TwoPartClass | Partial.cs:3:18:3:39 | PartialMethodWithBody1 | | Partial.cs:1:15:1:26 | TwoPartClass | Partial.cs:4:18:4:42 | PartialMethodWithoutBody1 | | Partial.cs:1:15:1:26 | TwoPartClass | Partial.cs:5:17:5:23 | Method2 | +| Partial.cs:1:15:1:26 | TwoPartClass | Partial.cs:10:18:10:39 | PartialMethodWithBody1 | | Partial.cs:1:15:1:26 | TwoPartClass | Partial.cs:11:17:11:23 | Method3 | -| Partial.cs:8:15:8:26 | TwoPartClass | Partial.cs:3:18:3:39 | PartialMethodWithBody1 | | Partial.cs:8:15:8:26 | TwoPartClass | Partial.cs:4:18:4:42 | PartialMethodWithoutBody1 | | Partial.cs:8:15:8:26 | TwoPartClass | Partial.cs:5:17:5:23 | Method2 | +| Partial.cs:8:15:8:26 | TwoPartClass | Partial.cs:10:18:10:39 | PartialMethodWithBody1 | | Partial.cs:8:15:8:26 | TwoPartClass | Partial.cs:11:17:11:23 | Method3 | | Partial.cs:14:15:14:33 | OnePartPartialClass | Partial.cs:16:18:16:42 | PartialMethodWithoutBody2 | | Partial.cs:14:15:14:33 | OnePartPartialClass | Partial.cs:17:17:17:23 | Method4 | diff --git a/csharp/ql/test/library-tests/partial/PartialMethodBody.expected b/csharp/ql/test/library-tests/partial/PartialMethodBody.expected index e6592704f1a..b440bfb640b 100644 --- a/csharp/ql/test/library-tests/partial/PartialMethodBody.expected +++ b/csharp/ql/test/library-tests/partial/PartialMethodBody.expected @@ -1,3 +1,3 @@ -| Partial.cs:3:18:3:39 | PartialMethodWithBody1 | true | | Partial.cs:4:18:4:42 | PartialMethodWithoutBody1 | false | +| Partial.cs:10:18:10:39 | PartialMethodWithBody1 | true | | Partial.cs:16:18:16:42 | PartialMethodWithoutBody2 | false | diff --git a/csharp/ql/test/library-tests/partial/PrintAst.expected b/csharp/ql/test/library-tests/partial/PrintAst.expected index 264e06ce944..08e8e66d40e 100644 --- a/csharp/ql/test/library-tests/partial/PrintAst.expected +++ b/csharp/ql/test/library-tests/partial/PrintAst.expected @@ -1,13 +1,13 @@ Partial.cs: # 1| [Class] TwoPartClass -# 3| 5: [Method] PartialMethodWithBody1 -# 3| -1: [TypeMention] Void -# 10| 4: [BlockStmt] {...} -# 4| 6: [Method] PartialMethodWithoutBody1 +# 4| 5: [Method] PartialMethodWithoutBody1 # 4| -1: [TypeMention] Void -# 5| 7: [Method] Method2 +# 5| 6: [Method] Method2 # 5| -1: [TypeMention] Void # 5| 4: [BlockStmt] {...} +# 10| 7: [Method] PartialMethodWithBody1 +# 3| -1: [TypeMention] Void +# 10| 4: [BlockStmt] {...} # 11| 8: [Method] Method3 # 11| -1: [TypeMention] Void # 11| 4: [BlockStmt] {...} diff --git a/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.cs b/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.cs index b698edfddce..38dcf94ef8d 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.cs +++ b/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.cs @@ -10,7 +10,12 @@ namespace Test using System.Data; using System.Data.Entity; using System.Data.SqlClient; + using System.Diagnostics.CodeAnalysis; + using System.Threading; + using System.Threading.Tasks; using System.Web.UI.WebControls; + using Microsoft.AspNetCore.Http; + using Microsoft.AspNetCore.Mvc; public class EntityFrameworkContext : DbContext { @@ -110,4 +115,28 @@ namespace Test System.Windows.Forms.TextBox box1; } + + public abstract class MyController : Controller + { + [HttpPost("{userId:string}")] + public async Task GetUserById([FromRoute] string userId, CancellationToken cancellationToken) + { + // This is a vulnerable method due to SQL injection + string query = "SELECT * FROM Users WHERE UserId = '" + userId + "'"; + + using (SqlConnection connection = new SqlConnection("YourConnectionString")) + { + SqlCommand command = new SqlCommand(query, connection); + connection.Open(); + + SqlDataReader reader = command.ExecuteReader(); + while (reader.Read()) + { + Console.WriteLine(String.Format("{0}, {1}", reader["UserId"], reader["Username"])); + } + } + + return Ok(); + } + } } diff --git a/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.expected b/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.expected index a6f74041843..7a0e0fad181 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.expected +++ b/csharp/ql/test/query-tests/Security Features/CWE-089/SqlInjection.expected @@ -1,14 +1,15 @@ #select | SecondOrderSqlInjection.cs:25:71:25:145 | ... + ... | SecondOrderSqlInjection.cs:20:48:20:78 | call to method ExecuteReader : SqlDataReader | SecondOrderSqlInjection.cs:25:71:25:145 | ... + ... | This query depends on $@. | SecondOrderSqlInjection.cs:20:48:20:78 | call to method ExecuteReader : SqlDataReader | this database input | | SecondOrderSqlInjection.cs:45:57:45:59 | access to local variable sql | SecondOrderSqlInjection.cs:33:36:33:78 | object creation of type FileStream : FileStream | SecondOrderSqlInjection.cs:45:57:45:59 | access to local variable sql | This query depends on $@. | SecondOrderSqlInjection.cs:33:36:33:78 | object creation of type FileStream : FileStream | this file stream | -| SqlInjection.cs:34:50:34:55 | access to local variable query1 | SqlInjection.cs:33:21:33:35 | access to field categoryTextBox : TextBox | SqlInjection.cs:34:50:34:55 | access to local variable query1 | This query depends on $@. | SqlInjection.cs:33:21:33:35 | access to field categoryTextBox : TextBox | this ASP.NET user input | -| SqlInjection.cs:69:56:69:61 | access to local variable query1 | SqlInjection.cs:68:33:68:47 | access to field categoryTextBox : TextBox | SqlInjection.cs:69:56:69:61 | access to local variable query1 | This query depends on $@. | SqlInjection.cs:68:33:68:47 | access to field categoryTextBox : TextBox | this ASP.NET user input | -| SqlInjection.cs:70:55:70:60 | access to local variable query1 | SqlInjection.cs:68:33:68:47 | access to field categoryTextBox : TextBox | SqlInjection.cs:70:55:70:60 | access to local variable query1 | This query depends on $@. | SqlInjection.cs:68:33:68:47 | access to field categoryTextBox : TextBox | this ASP.NET user input | -| SqlInjection.cs:83:50:83:55 | access to local variable query1 | SqlInjection.cs:82:21:82:29 | access to property Text : String | SqlInjection.cs:83:50:83:55 | access to local variable query1 | This query depends on $@. | SqlInjection.cs:82:21:82:29 | access to property Text : String | this TextBox text | -| SqlInjection.cs:93:42:93:52 | access to local variable queryString | SqlInjection.cs:92:21:92:29 | access to property Text : String | SqlInjection.cs:93:42:93:52 | access to local variable queryString | This query depends on $@. | SqlInjection.cs:92:21:92:29 | access to property Text : String | this TextBox text | -| SqlInjection.cs:94:50:94:52 | access to local variable cmd | SqlInjection.cs:92:21:92:29 | access to property Text : String | SqlInjection.cs:94:50:94:52 | access to local variable cmd | This query depends on $@. | SqlInjection.cs:92:21:92:29 | access to property Text : String | this TextBox text | -| SqlInjection.cs:104:42:104:52 | access to local variable queryString | SqlInjection.cs:103:21:103:38 | call to method ReadLine : String | SqlInjection.cs:104:42:104:52 | access to local variable queryString | This query depends on $@. | SqlInjection.cs:103:21:103:38 | call to method ReadLine : String | this read from stdin | -| SqlInjection.cs:105:50:105:52 | access to local variable cmd | SqlInjection.cs:103:21:103:38 | call to method ReadLine : String | SqlInjection.cs:105:50:105:52 | access to local variable cmd | This query depends on $@. | SqlInjection.cs:103:21:103:38 | call to method ReadLine : String | this read from stdin | +| SqlInjection.cs:39:50:39:55 | access to local variable query1 | SqlInjection.cs:38:21:38:35 | access to field categoryTextBox : TextBox | SqlInjection.cs:39:50:39:55 | access to local variable query1 | This query depends on $@. | SqlInjection.cs:38:21:38:35 | access to field categoryTextBox : TextBox | this ASP.NET user input | +| SqlInjection.cs:74:56:74:61 | access to local variable query1 | SqlInjection.cs:73:33:73:47 | access to field categoryTextBox : TextBox | SqlInjection.cs:74:56:74:61 | access to local variable query1 | This query depends on $@. | SqlInjection.cs:73:33:73:47 | access to field categoryTextBox : TextBox | this ASP.NET user input | +| SqlInjection.cs:75:55:75:60 | access to local variable query1 | SqlInjection.cs:73:33:73:47 | access to field categoryTextBox : TextBox | SqlInjection.cs:75:55:75:60 | access to local variable query1 | This query depends on $@. | SqlInjection.cs:73:33:73:47 | access to field categoryTextBox : TextBox | this ASP.NET user input | +| SqlInjection.cs:88:50:88:55 | access to local variable query1 | SqlInjection.cs:87:21:87:29 | access to property Text : String | SqlInjection.cs:88:50:88:55 | access to local variable query1 | This query depends on $@. | SqlInjection.cs:87:21:87:29 | access to property Text : String | this TextBox text | +| SqlInjection.cs:98:42:98:52 | access to local variable queryString | SqlInjection.cs:97:21:97:29 | access to property Text : String | SqlInjection.cs:98:42:98:52 | access to local variable queryString | This query depends on $@. | SqlInjection.cs:97:21:97:29 | access to property Text : String | this TextBox text | +| SqlInjection.cs:99:50:99:52 | access to local variable cmd | SqlInjection.cs:97:21:97:29 | access to property Text : String | SqlInjection.cs:99:50:99:52 | access to local variable cmd | This query depends on $@. | SqlInjection.cs:97:21:97:29 | access to property Text : String | this TextBox text | +| SqlInjection.cs:109:42:109:52 | access to local variable queryString | SqlInjection.cs:108:21:108:38 | call to method ReadLine : String | SqlInjection.cs:109:42:109:52 | access to local variable queryString | This query depends on $@. | SqlInjection.cs:108:21:108:38 | call to method ReadLine : String | this read from stdin | +| SqlInjection.cs:110:50:110:52 | access to local variable cmd | SqlInjection.cs:108:21:108:38 | call to method ReadLine : String | SqlInjection.cs:110:50:110:52 | access to local variable cmd | This query depends on $@. | SqlInjection.cs:108:21:108:38 | call to method ReadLine : String | this read from stdin | +| SqlInjection.cs:129:53:129:57 | access to local variable query | SqlInjection.cs:122:73:122:78 | userId : String | SqlInjection.cs:129:53:129:57 | access to local variable query | This query depends on $@. | SqlInjection.cs:122:73:122:78 | userId : String | this ASP.NET Core MVC action method parameter | | SqlInjectionDapper.cs:21:55:21:59 | access to local variable query | SqlInjectionDapper.cs:20:86:20:94 | access to property Text : String | SqlInjectionDapper.cs:21:55:21:59 | access to local variable query | This query depends on $@. | SqlInjectionDapper.cs:20:86:20:94 | access to property Text : String | this TextBox text | | SqlInjectionDapper.cs:30:66:30:70 | access to local variable query | SqlInjectionDapper.cs:29:86:29:94 | access to property Text : String | SqlInjectionDapper.cs:30:66:30:70 | access to local variable query | This query depends on $@. | SqlInjectionDapper.cs:29:86:29:94 | access to property Text : String | this TextBox text | | SqlInjectionDapper.cs:39:63:39:67 | access to local variable query | SqlInjectionDapper.cs:38:86:38:94 | access to property Text : String | SqlInjectionDapper.cs:39:63:39:67 | access to local variable query | This query depends on $@. | SqlInjectionDapper.cs:38:86:38:94 | access to property Text : String | this TextBox text | @@ -40,27 +41,29 @@ edges | SecondOrderSqlInjection.cs:40:25:40:27 | access to local variable sql : String | SecondOrderSqlInjection.cs:45:57:45:59 | access to local variable sql | provenance | Sink:MaD:10 | | SecondOrderSqlInjection.cs:40:31:40:33 | access to local variable sql : String | SecondOrderSqlInjection.cs:40:31:40:40 | call to method Trim : String | provenance | MaD:28 | | SecondOrderSqlInjection.cs:40:31:40:40 | call to method Trim : String | SecondOrderSqlInjection.cs:40:25:40:27 | access to local variable sql : String | provenance | | -| SqlInjection.cs:32:21:32:26 | access to local variable query1 : String | SqlInjection.cs:34:50:34:55 | access to local variable query1 | provenance | Sink:MaD:18 | -| SqlInjection.cs:33:21:33:35 | access to field categoryTextBox : TextBox | SqlInjection.cs:33:21:33:40 | access to property Text : String | provenance | MaD:26 | -| SqlInjection.cs:33:21:33:40 | access to property Text : String | SqlInjection.cs:32:21:32:26 | access to local variable query1 : String | provenance | | -| SqlInjection.cs:67:25:67:30 | access to local variable query1 : String | SqlInjection.cs:69:56:69:61 | access to local variable query1 | provenance | Sink:MaD:7 | -| SqlInjection.cs:67:25:67:30 | access to local variable query1 : String | SqlInjection.cs:70:55:70:60 | access to local variable query1 | provenance | Sink:MaD:8 | -| SqlInjection.cs:68:33:68:47 | access to field categoryTextBox : TextBox | SqlInjection.cs:68:33:68:52 | access to property Text : String | provenance | MaD:26 | -| SqlInjection.cs:68:33:68:52 | access to property Text : String | SqlInjection.cs:67:25:67:30 | access to local variable query1 : String | provenance | | -| SqlInjection.cs:81:21:81:26 | access to local variable query1 : String | SqlInjection.cs:83:50:83:55 | access to local variable query1 | provenance | Sink:MaD:18 | -| SqlInjection.cs:82:21:82:29 | access to property Text : String | SqlInjection.cs:81:21:81:26 | access to local variable query1 : String | provenance | | -| SqlInjection.cs:91:21:91:31 | access to local variable queryString : String | SqlInjection.cs:93:42:93:52 | access to local variable queryString | provenance | Sink:MaD:15 | -| SqlInjection.cs:91:21:91:31 | access to local variable queryString : String | SqlInjection.cs:93:42:93:52 | access to local variable queryString : String | provenance | | -| SqlInjection.cs:92:21:92:29 | access to property Text : String | SqlInjection.cs:91:21:91:31 | access to local variable queryString : String | provenance | | -| SqlInjection.cs:93:21:93:23 | access to local variable cmd : SqlCommand | SqlInjection.cs:94:50:94:52 | access to local variable cmd | provenance | Sink:MaD:17 | -| SqlInjection.cs:93:27:93:53 | object creation of type SqlCommand : SqlCommand | SqlInjection.cs:93:21:93:23 | access to local variable cmd : SqlCommand | provenance | | -| SqlInjection.cs:93:42:93:52 | access to local variable queryString : String | SqlInjection.cs:93:27:93:53 | object creation of type SqlCommand : SqlCommand | provenance | MaD:19 | -| SqlInjection.cs:102:21:102:31 | access to local variable queryString : String | SqlInjection.cs:104:42:104:52 | access to local variable queryString | provenance | Sink:MaD:15 | -| SqlInjection.cs:102:21:102:31 | access to local variable queryString : String | SqlInjection.cs:104:42:104:52 | access to local variable queryString : String | provenance | | -| SqlInjection.cs:103:21:103:38 | call to method ReadLine : String | SqlInjection.cs:102:21:102:31 | access to local variable queryString : String | provenance | Src:MaD:27 | -| SqlInjection.cs:104:21:104:23 | access to local variable cmd : SqlCommand | SqlInjection.cs:105:50:105:52 | access to local variable cmd | provenance | Sink:MaD:17 | -| SqlInjection.cs:104:27:104:53 | object creation of type SqlCommand : SqlCommand | SqlInjection.cs:104:21:104:23 | access to local variable cmd : SqlCommand | provenance | | -| SqlInjection.cs:104:42:104:52 | access to local variable queryString : String | SqlInjection.cs:104:27:104:53 | object creation of type SqlCommand : SqlCommand | provenance | MaD:19 | +| SqlInjection.cs:37:21:37:26 | access to local variable query1 : String | SqlInjection.cs:39:50:39:55 | access to local variable query1 | provenance | Sink:MaD:18 | +| SqlInjection.cs:38:21:38:35 | access to field categoryTextBox : TextBox | SqlInjection.cs:38:21:38:40 | access to property Text : String | provenance | MaD:26 | +| SqlInjection.cs:38:21:38:40 | access to property Text : String | SqlInjection.cs:37:21:37:26 | access to local variable query1 : String | provenance | | +| SqlInjection.cs:72:25:72:30 | access to local variable query1 : String | SqlInjection.cs:74:56:74:61 | access to local variable query1 | provenance | Sink:MaD:7 | +| SqlInjection.cs:72:25:72:30 | access to local variable query1 : String | SqlInjection.cs:75:55:75:60 | access to local variable query1 | provenance | Sink:MaD:8 | +| SqlInjection.cs:73:33:73:47 | access to field categoryTextBox : TextBox | SqlInjection.cs:73:33:73:52 | access to property Text : String | provenance | MaD:26 | +| SqlInjection.cs:73:33:73:52 | access to property Text : String | SqlInjection.cs:72:25:72:30 | access to local variable query1 : String | provenance | | +| SqlInjection.cs:86:21:86:26 | access to local variable query1 : String | SqlInjection.cs:88:50:88:55 | access to local variable query1 | provenance | Sink:MaD:18 | +| SqlInjection.cs:87:21:87:29 | access to property Text : String | SqlInjection.cs:86:21:86:26 | access to local variable query1 : String | provenance | | +| SqlInjection.cs:96:21:96:31 | access to local variable queryString : String | SqlInjection.cs:98:42:98:52 | access to local variable queryString | provenance | Sink:MaD:15 | +| SqlInjection.cs:96:21:96:31 | access to local variable queryString : String | SqlInjection.cs:98:42:98:52 | access to local variable queryString : String | provenance | | +| SqlInjection.cs:97:21:97:29 | access to property Text : String | SqlInjection.cs:96:21:96:31 | access to local variable queryString : String | provenance | | +| SqlInjection.cs:98:21:98:23 | access to local variable cmd : SqlCommand | SqlInjection.cs:99:50:99:52 | access to local variable cmd | provenance | Sink:MaD:17 | +| SqlInjection.cs:98:27:98:53 | object creation of type SqlCommand : SqlCommand | SqlInjection.cs:98:21:98:23 | access to local variable cmd : SqlCommand | provenance | | +| SqlInjection.cs:98:42:98:52 | access to local variable queryString : String | SqlInjection.cs:98:27:98:53 | object creation of type SqlCommand : SqlCommand | provenance | MaD:19 | +| SqlInjection.cs:107:21:107:31 | access to local variable queryString : String | SqlInjection.cs:109:42:109:52 | access to local variable queryString | provenance | Sink:MaD:15 | +| SqlInjection.cs:107:21:107:31 | access to local variable queryString : String | SqlInjection.cs:109:42:109:52 | access to local variable queryString : String | provenance | | +| SqlInjection.cs:108:21:108:38 | call to method ReadLine : String | SqlInjection.cs:107:21:107:31 | access to local variable queryString : String | provenance | Src:MaD:27 | +| SqlInjection.cs:109:21:109:23 | access to local variable cmd : SqlCommand | SqlInjection.cs:110:50:110:52 | access to local variable cmd | provenance | Sink:MaD:17 | +| SqlInjection.cs:109:27:109:53 | object creation of type SqlCommand : SqlCommand | SqlInjection.cs:109:21:109:23 | access to local variable cmd : SqlCommand | provenance | | +| SqlInjection.cs:109:42:109:52 | access to local variable queryString : String | SqlInjection.cs:109:27:109:53 | object creation of type SqlCommand : SqlCommand | provenance | MaD:19 | +| SqlInjection.cs:122:73:122:78 | userId : String | SqlInjection.cs:125:20:125:24 | access to local variable query : String | provenance | | +| SqlInjection.cs:125:20:125:24 | access to local variable query : String | SqlInjection.cs:129:53:129:57 | access to local variable query | provenance | Sink:MaD:16 | | SqlInjectionDapper.cs:20:21:20:25 | access to local variable query : String | SqlInjectionDapper.cs:21:55:21:59 | access to local variable query | provenance | Sink:MaD:4 | | SqlInjectionDapper.cs:20:86:20:94 | access to property Text : String | SqlInjectionDapper.cs:20:21:20:25 | access to local variable query : String | provenance | | | SqlInjectionDapper.cs:29:21:29:25 | access to local variable query : String | SqlInjectionDapper.cs:30:66:30:70 | access to local variable query | provenance | Sink:MaD:5 | @@ -144,32 +147,35 @@ nodes | SecondOrderSqlInjection.cs:40:31:40:33 | access to local variable sql : String | semmle.label | access to local variable sql : String | | SecondOrderSqlInjection.cs:40:31:40:40 | call to method Trim : String | semmle.label | call to method Trim : String | | SecondOrderSqlInjection.cs:45:57:45:59 | access to local variable sql | semmle.label | access to local variable sql | -| SqlInjection.cs:32:21:32:26 | access to local variable query1 : String | semmle.label | access to local variable query1 : String | -| SqlInjection.cs:33:21:33:35 | access to field categoryTextBox : TextBox | semmle.label | access to field categoryTextBox : TextBox | -| SqlInjection.cs:33:21:33:40 | access to property Text : String | semmle.label | access to property Text : String | -| SqlInjection.cs:34:50:34:55 | access to local variable query1 | semmle.label | access to local variable query1 | -| SqlInjection.cs:67:25:67:30 | access to local variable query1 : String | semmle.label | access to local variable query1 : String | -| SqlInjection.cs:68:33:68:47 | access to field categoryTextBox : TextBox | semmle.label | access to field categoryTextBox : TextBox | -| SqlInjection.cs:68:33:68:52 | access to property Text : String | semmle.label | access to property Text : String | -| SqlInjection.cs:69:56:69:61 | access to local variable query1 | semmle.label | access to local variable query1 | -| SqlInjection.cs:70:55:70:60 | access to local variable query1 | semmle.label | access to local variable query1 | -| SqlInjection.cs:81:21:81:26 | access to local variable query1 : String | semmle.label | access to local variable query1 : String | -| SqlInjection.cs:82:21:82:29 | access to property Text : String | semmle.label | access to property Text : String | -| SqlInjection.cs:83:50:83:55 | access to local variable query1 | semmle.label | access to local variable query1 | -| SqlInjection.cs:91:21:91:31 | access to local variable queryString : String | semmle.label | access to local variable queryString : String | -| SqlInjection.cs:92:21:92:29 | access to property Text : String | semmle.label | access to property Text : String | -| SqlInjection.cs:93:21:93:23 | access to local variable cmd : SqlCommand | semmle.label | access to local variable cmd : SqlCommand | -| SqlInjection.cs:93:27:93:53 | object creation of type SqlCommand : SqlCommand | semmle.label | object creation of type SqlCommand : SqlCommand | -| SqlInjection.cs:93:42:93:52 | access to local variable queryString | semmle.label | access to local variable queryString | -| SqlInjection.cs:93:42:93:52 | access to local variable queryString : String | semmle.label | access to local variable queryString : String | -| SqlInjection.cs:94:50:94:52 | access to local variable cmd | semmle.label | access to local variable cmd | -| SqlInjection.cs:102:21:102:31 | access to local variable queryString : String | semmle.label | access to local variable queryString : String | -| SqlInjection.cs:103:21:103:38 | call to method ReadLine : String | semmle.label | call to method ReadLine : String | -| SqlInjection.cs:104:21:104:23 | access to local variable cmd : SqlCommand | semmle.label | access to local variable cmd : SqlCommand | -| SqlInjection.cs:104:27:104:53 | object creation of type SqlCommand : SqlCommand | semmle.label | object creation of type SqlCommand : SqlCommand | -| SqlInjection.cs:104:42:104:52 | access to local variable queryString | semmle.label | access to local variable queryString | -| SqlInjection.cs:104:42:104:52 | access to local variable queryString : String | semmle.label | access to local variable queryString : String | -| SqlInjection.cs:105:50:105:52 | access to local variable cmd | semmle.label | access to local variable cmd | +| SqlInjection.cs:37:21:37:26 | access to local variable query1 : String | semmle.label | access to local variable query1 : String | +| SqlInjection.cs:38:21:38:35 | access to field categoryTextBox : TextBox | semmle.label | access to field categoryTextBox : TextBox | +| SqlInjection.cs:38:21:38:40 | access to property Text : String | semmle.label | access to property Text : String | +| SqlInjection.cs:39:50:39:55 | access to local variable query1 | semmle.label | access to local variable query1 | +| SqlInjection.cs:72:25:72:30 | access to local variable query1 : String | semmle.label | access to local variable query1 : String | +| SqlInjection.cs:73:33:73:47 | access to field categoryTextBox : TextBox | semmle.label | access to field categoryTextBox : TextBox | +| SqlInjection.cs:73:33:73:52 | access to property Text : String | semmle.label | access to property Text : String | +| SqlInjection.cs:74:56:74:61 | access to local variable query1 | semmle.label | access to local variable query1 | +| SqlInjection.cs:75:55:75:60 | access to local variable query1 | semmle.label | access to local variable query1 | +| SqlInjection.cs:86:21:86:26 | access to local variable query1 : String | semmle.label | access to local variable query1 : String | +| SqlInjection.cs:87:21:87:29 | access to property Text : String | semmle.label | access to property Text : String | +| SqlInjection.cs:88:50:88:55 | access to local variable query1 | semmle.label | access to local variable query1 | +| SqlInjection.cs:96:21:96:31 | access to local variable queryString : String | semmle.label | access to local variable queryString : String | +| SqlInjection.cs:97:21:97:29 | access to property Text : String | semmle.label | access to property Text : String | +| SqlInjection.cs:98:21:98:23 | access to local variable cmd : SqlCommand | semmle.label | access to local variable cmd : SqlCommand | +| SqlInjection.cs:98:27:98:53 | object creation of type SqlCommand : SqlCommand | semmle.label | object creation of type SqlCommand : SqlCommand | +| SqlInjection.cs:98:42:98:52 | access to local variable queryString | semmle.label | access to local variable queryString | +| SqlInjection.cs:98:42:98:52 | access to local variable queryString : String | semmle.label | access to local variable queryString : String | +| SqlInjection.cs:99:50:99:52 | access to local variable cmd | semmle.label | access to local variable cmd | +| SqlInjection.cs:107:21:107:31 | access to local variable queryString : String | semmle.label | access to local variable queryString : String | +| SqlInjection.cs:108:21:108:38 | call to method ReadLine : String | semmle.label | call to method ReadLine : String | +| SqlInjection.cs:109:21:109:23 | access to local variable cmd : SqlCommand | semmle.label | access to local variable cmd : SqlCommand | +| SqlInjection.cs:109:27:109:53 | object creation of type SqlCommand : SqlCommand | semmle.label | object creation of type SqlCommand : SqlCommand | +| SqlInjection.cs:109:42:109:52 | access to local variable queryString | semmle.label | access to local variable queryString | +| SqlInjection.cs:109:42:109:52 | access to local variable queryString : String | semmle.label | access to local variable queryString : String | +| SqlInjection.cs:110:50:110:52 | access to local variable cmd | semmle.label | access to local variable cmd | +| SqlInjection.cs:122:73:122:78 | userId : String | semmle.label | userId : String | +| SqlInjection.cs:125:20:125:24 | access to local variable query : String | semmle.label | access to local variable query : String | +| SqlInjection.cs:129:53:129:57 | access to local variable query | semmle.label | access to local variable query | | SqlInjectionDapper.cs:20:21:20:25 | access to local variable query : String | semmle.label | access to local variable query : String | | SqlInjectionDapper.cs:20:86:20:94 | access to property Text : String | semmle.label | access to property Text : String | | SqlInjectionDapper.cs:21:55:21:59 | access to local variable query | semmle.label | access to local variable query | diff --git a/csharp/ql/test/query-tests/Security Features/CWE-089/options b/csharp/ql/test/query-tests/Security Features/CWE-089/options index 656d05b7449..c6ef0c87f2d 100644 --- a/csharp/ql/test/query-tests/Security Features/CWE-089/options +++ b/csharp/ql/test/query-tests/Security Features/CWE-089/options @@ -3,3 +3,4 @@ semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resour semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/System.Data.SqlClient/4.8.5/System.Data.SqlClient.csproj semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/System.Data.SQLite/1.0.118/System.Data.SQLite.csproj semmle-extractor-options: ${testdir}/../../../resources/stubs/System.Windows.cs +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.AspNetCore.App/Microsoft.AspNetCore.App.csproj 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/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/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/go/BUILD.bazel b/go/BUILD.bazel index 936c86e0ed1..931f061da9e 100644 --- a/go/BUILD.bazel +++ b/go/BUILD.bazel @@ -47,6 +47,7 @@ codeql_pkg_files( "//go/extractor/cli/go-autobuilder", "//go/extractor/cli/go-bootstrap", "//go/extractor/cli/go-build-runner", + "//go/extractor/cli/go-configure-baseline", "//go/extractor/cli/go-extractor", "//go/extractor/cli/go-gen-dbscheme", "//go/extractor/cli/go-tokenizer", diff --git a/go/codeql-tools/baseline-config-empty.json b/go/codeql-tools/baseline-config-empty.json deleted file mode 100644 index 568d688fc3f..00000000000 --- a/go/codeql-tools/baseline-config-empty.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "paths-ignore": [] -} \ No newline at end of file diff --git a/go/codeql-tools/baseline-config-vendor.json b/go/codeql-tools/baseline-config-vendor.json deleted file mode 100644 index d2f654073b0..00000000000 --- a/go/codeql-tools/baseline-config-vendor.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "paths-ignore": [ - "vendor/**" - ] -} \ No newline at end of file diff --git a/go/codeql-tools/configure-baseline.cmd b/go/codeql-tools/configure-baseline.cmd index 285c3d66829..47789cfbd3a 100644 --- a/go/codeql-tools/configure-baseline.cmd +++ b/go/codeql-tools/configure-baseline.cmd @@ -1,6 +1,4 @@ @echo off -if exist vendor\modules.txt ( - type "%CODEQL_EXTRACTOR_GO_ROOT%\tools\baseline-config-vendor.json" -) else ( - type "%CODEQL_EXTRACTOR_GO_ROOT%\tools\baseline-config-empty.json" -) + +type NUL && "%CODEQL_EXTRACTOR_GO_ROOT%/tools/%CODEQL_PLATFORM%/go-configure-baseline.exe" +exit /b %ERRORLEVEL% diff --git a/go/codeql-tools/configure-baseline.sh b/go/codeql-tools/configure-baseline.sh index f426773c3ba..20edf8b4c93 100755 --- a/go/codeql-tools/configure-baseline.sh +++ b/go/codeql-tools/configure-baseline.sh @@ -1,7 +1,3 @@ #!/bin/sh -if [ -f vendor/modules.txt ]; then - cat "$CODEQL_EXTRACTOR_GO_ROOT/tools/baseline-config-vendor.json" -else - cat "$CODEQL_EXTRACTOR_GO_ROOT/tools/baseline-config-empty.json" -fi +"$CODEQL_EXTRACTOR_GO_ROOT/tools/$CODEQL_PLATFORM/go-configure-baseline" 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/documentation/library-coverage/frameworks.csv b/go/documentation/library-coverage/frameworks.csv index 4d1d3ebfb63..7cb5e467634 100644 --- a/go/documentation/library-coverage/frameworks.csv +++ b/go/documentation/library-coverage/frameworks.csv @@ -1,21 +1,28 @@ Framework name,URL,Package prefixes Standard library,https://pkg.go.dev/std, 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 appleboy/gin-jwt,https://github.com/appleboy/gin-jwt,github.com/appleboy/gin-jwt* +Afero,https://github.com/spf13/afero,github.com/spf13/afero* beego,https://beego.me/,github.com/astaxie/beego* github.com/beego/beego* +CleverGo,https://github.com/clevergo/clevergo,clevergo.tech/clevergo* github.com/clevergo/clevergo* Couchbase official client(gocb),https://github.com/couchbase/gocb,github.com/couchbase/gocb* gopkg.in/couchbase/gocb* chi,https://go-chi.io/,github.com/go-chi/chi* Couchbase unofficial client,http://www.github.com/couchbase/go-couchbase,github.com/couchbaselabs/gocb* cristalhq/jwt,https://github.com/cristalhq/jwt,github.com/cristalhq/jwt* Echo,https://echo.labstack.com/,github.com/labstack/echo* fasthttp,https://github.com/valyala/fasthttp,github.com/valyala/fasthttp* +Fiber,https://github.com/gofiber/fiber,github.com/gofiber/fiber* Fosite,https://github.com/ory/fosite,github.com/ory/fosite* gf-jwt,https://github.com/gogf/gf-jwt,github.com/gogf/gf-jwt* Gin,https://github.com/gin-gonic/gin,github.com/gin-gonic/gin* +Glog,https://github.com/golang/glog,github.com/golang/glog* gopkg.in/glog* k8s.io/klog* Go JOSE,https://github.com/go-jose/go-jose,github.com/go-jose/go-jose* github.com/square/go-jose* gopkg.in/square/go-jose* gopkg.in/go-jose/go-jose* Go kit,https://gokit.io/,github.com/go-kit/kit* go-pg,https://pg.uptrace.dev/,github.com/go-pg/pg* go-restful,https://github.com/emicklei/go-restful,github.com/emicklei/go-restful* +go-sh,https://github.com/codeskyblue/go-sh,github.com/codeskyblue/go-sh* +Go-spew,https://github.com/davecgh/go-spew,github.com/davecgh/go-spew/spew* Gokogiri,https://github.com/moovweb/gokogiri,github.com/jbowtie/gokogiri* github.com/moovweb/gokogiri* +golang.org/x/crypto/ssh,https://pkg.go.dev/golang.org/x/crypto/ssh,golang.org/x/crypto/ssh* golang.org/x/net,https://pkg.go.dev/golang.org/x/net,golang.org/x/net* goproxy,https://github.com/elazarl/goproxy,github.com/elazarl/goproxy* gorilla/mux,https://github.com/gorilla/mux,github.com/gorilla/mux* @@ -32,6 +39,7 @@ kataras/jwt,https://github.com/kataras/jwt,github.com/kataras/jwt* Kubernetes,https://kubernetes.io/,k8s.io/api* k8s.io/apimachinery* lestrrat-go/jwx,https://github.com/lestrrat-go/jwx,github.com/lestrrat-go/jwx* github.com/lestrrat/go-jwx* lestrrat-go/libxml2,https://github.com/lestrrat-go/libxml2,github.com/lestrrat-go/libxml2* +Logrus,https://github.com/sirupsen/logrus,github.com/Sirupsen/logrus* github.com/sirupsen/logrus* Macaron,https://gopkg.in/macaron.v1,gopkg.in/macaron* nhooyr.io/websocket,https://nhooyr.io/websocket,nhooyr.io/websocket* protobuf,https://pkg.go.dev/google.golang.org/protobuf,github.com/golang/protobuf* google.golang.org/protobuf* diff --git a/go/extractor/cli/go-configure-baseline/BUILD.bazel b/go/extractor/cli/go-configure-baseline/BUILD.bazel new file mode 100644 index 00000000000..df1af64d6a3 --- /dev/null +++ b/go/extractor/cli/go-configure-baseline/BUILD.bazel @@ -0,0 +1,18 @@ +# generated running `bazel run //go/gazelle`, do not edit + +load("@rules_go//go:def.bzl", "go_library") +load("//go:rules.bzl", "codeql_go_binary") + +go_library( + name = "go-configure-baseline_lib", + srcs = ["go-configure-baseline.go"], + importpath = "github.com/github/codeql-go/extractor/cli/go-configure-baseline", + visibility = ["//visibility:private"], + deps = ["//go/extractor/configurebaseline"], +) + +codeql_go_binary( + name = "go-configure-baseline", + embed = [":go-configure-baseline_lib"], + visibility = ["//visibility:public"], +) diff --git a/go/extractor/cli/go-configure-baseline/go-configure-baseline.go b/go/extractor/cli/go-configure-baseline/go-configure-baseline.go new file mode 100644 index 00000000000..c8159908e0a --- /dev/null +++ b/go/extractor/cli/go-configure-baseline/go-configure-baseline.go @@ -0,0 +1,16 @@ +package main + +import ( + "fmt" + + "github.com/github/codeql-go/extractor/configurebaseline" +) + +func main() { + jsonResult, err := configurebaseline.GetConfigBaselineAsJSON(".") + if err != nil { + panic(err) + } else { + fmt.Println(string(jsonResult)) + } +} diff --git a/go/extractor/configurebaseline/BUILD.bazel b/go/extractor/configurebaseline/BUILD.bazel new file mode 100644 index 00000000000..b12e89abaf3 --- /dev/null +++ b/go/extractor/configurebaseline/BUILD.bazel @@ -0,0 +1,11 @@ +# generated running `bazel run //go/gazelle`, do not edit + +load("@rules_go//go:def.bzl", "go_library") + +go_library( + name = "configurebaseline", + srcs = ["configurebaseline.go"], + importpath = "github.com/github/codeql-go/extractor/configurebaseline", + visibility = ["//visibility:public"], + deps = ["//go/extractor/util"], +) diff --git a/go/extractor/configurebaseline/configurebaseline.go b/go/extractor/configurebaseline/configurebaseline.go new file mode 100644 index 00000000000..f8e2c998f8c --- /dev/null +++ b/go/extractor/configurebaseline/configurebaseline.go @@ -0,0 +1,52 @@ +package configurebaseline + +import ( + "encoding/json" + "io/fs" + "os" + "path" + "path/filepath" + + "github.com/github/codeql-go/extractor/util" +) + +func fileExists(path string) bool { + stat, err := os.Stat(path) + return err == nil && stat.Mode().IsRegular() +} + +// Decides if `dirPath` is a vendor directory by testing whether it is called `vendor` +// and contains a `modules.txt` file. +func isGolangVendorDirectory(dirPath string) bool { + return filepath.Base(dirPath) == "vendor" && fileExists(filepath.Join(dirPath, "modules.txt")) +} + +type BaselineConfig struct { + PathsIgnore []string `json:"paths-ignore"` +} + +func GetConfigBaselineAsJSON(rootDir string) ([]byte, error) { + vendorDirs := make([]string, 0) + + if util.IsVendorDirExtractionEnabled() { + // The user wants vendor directories scanned; emit an empty report. + } else { + filepath.WalkDir(rootDir, func(dirPath string, d fs.DirEntry, err error) error { + if err != nil { + // Ignore any unreadable paths -- if this script can't see it, very likely + // it will not be extracted either. + return nil + } + if isGolangVendorDirectory(dirPath) { + // Note that CodeQL expects a forward-slash-separated path, even on Windows. + vendorDirs = append(vendorDirs, path.Join(filepath.ToSlash(dirPath), "**")) + return filepath.SkipDir + } else { + return nil + } + }) + } + + outputStruct := BaselineConfig{PathsIgnore: vendorDirs} + return json.Marshal(outputStruct) +} diff --git a/go/extractor/extractor.go b/go/extractor/extractor.go index df3a43f80cf..4926d8e3e13 100644 --- a/go/extractor/extractor.go +++ b/go/extractor/extractor.go @@ -199,7 +199,7 @@ func ExtractWithFlags(buildFlags []string, patterns []string) error { // If CODEQL_EXTRACTOR_GO_EXTRACT_VENDOR_DIRS is "true", we extract `vendor` directories; // otherwise (the default) is to exclude them from extraction - includeVendor := os.Getenv("CODEQL_EXTRACTOR_GO_EXTRACT_VENDOR_DIRS") == "true" + includeVendor := util.IsVendorDirExtractionEnabled() if !includeVendor { excludedDirs = append(excludedDirs, "vendor") } diff --git a/go/extractor/go.mod b/go/extractor/go.mod index 42366f17286..5be2d02e7b3 100644 --- a/go/extractor/go.mod +++ b/go/extractor/go.mod @@ -7,7 +7,7 @@ go 1.22.0 // 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/extractor/util/BUILD.bazel b/go/extractor/util/BUILD.bazel index d0195e05be2..b7a7783aa79 100644 --- a/go/extractor/util/BUILD.bazel +++ b/go/extractor/util/BUILD.bazel @@ -5,6 +5,7 @@ load("@rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "util", srcs = [ + "extractvendordirs.go", "semver.go", "util.go", ], diff --git a/go/extractor/util/extractvendordirs.go b/go/extractor/util/extractvendordirs.go new file mode 100644 index 00000000000..778d5120cf2 --- /dev/null +++ b/go/extractor/util/extractvendordirs.go @@ -0,0 +1,9 @@ +package util + +import ( + "os" +) + +func IsVendorDirExtractionEnabled() bool { + return os.Getenv("CODEQL_EXTRACTOR_GO_EXTRACT_VENDOR_DIRS") == "true" +} diff --git a/go/ql/consistency-queries/CHANGELOG.md b/go/ql/consistency-queries/CHANGELOG.md index 2e7162889c3..6976ee14e27 100644 --- a/go/ql/consistency-queries/CHANGELOG.md +++ b/go/ql/consistency-queries/CHANGELOG.md @@ -1,3 +1,7 @@ +## 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/codeql-pack.release.yml b/go/ql/consistency-queries/codeql-pack.release.yml index 42da17b3841..8033d980afa 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.6 diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index 17f966d2c41..fc1029a0c85 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.7-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/configure-baseline/src/a/vendor/avendor.go b/go/ql/integration-tests/configure-baseline/src/a/vendor/avendor.go new file mode 100644 index 00000000000..6e423a61072 --- /dev/null +++ b/go/ql/integration-tests/configure-baseline/src/a/vendor/avendor.go @@ -0,0 +1 @@ +package abc 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/configure-baseline/src/a/vendor/modules.txt 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/configure-baseline/src/a/vendor/modules.txt diff --git a/go/ql/integration-tests/configure-baseline/src/b/vendor/bvendor.go b/go/ql/integration-tests/configure-baseline/src/b/vendor/bvendor.go new file mode 100644 index 00000000000..6e423a61072 --- /dev/null +++ b/go/ql/integration-tests/configure-baseline/src/b/vendor/bvendor.go @@ -0,0 +1 @@ +package abc diff --git a/go/ql/integration-tests/all-platforms/go/diagnostics/go-files-found-not-processed/work/go.sum b/go/ql/integration-tests/configure-baseline/src/b/vendor/modules.txt 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/configure-baseline/src/b/vendor/modules.txt diff --git a/go/ql/integration-tests/configure-baseline/src/c/vendor/cvendor.go b/go/ql/integration-tests/configure-baseline/src/c/vendor/cvendor.go new file mode 100644 index 00000000000..6e423a61072 --- /dev/null +++ b/go/ql/integration-tests/configure-baseline/src/c/vendor/cvendor.go @@ -0,0 +1 @@ +package abc diff --git a/go/ql/integration-tests/configure-baseline/src/root.go b/go/ql/integration-tests/configure-baseline/src/root.go new file mode 100644 index 00000000000..6e423a61072 --- /dev/null +++ b/go/ql/integration-tests/configure-baseline/src/root.go @@ -0,0 +1 @@ +package abc diff --git a/go/ql/integration-tests/configure-baseline/test.py b/go/ql/integration-tests/configure-baseline/test.py new file mode 100644 index 00000000000..e92cc868cab --- /dev/null +++ b/go/ql/integration-tests/configure-baseline/test.py @@ -0,0 +1,9 @@ +import os.path +import json + +def test(codeql, go): + codeql.database.init(source_root="src") + baseline_info_path = os.path.join("test-db", "baseline-info.json") + with open(baseline_info_path, "r") as f: + baseline_info = json.load(f) + assert set(baseline_info["languages"]["go"]["files"]) == set(["root.go", "c/vendor/cvendor.go"]), "Expected root.go and cvendor.go in baseline" 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/go-files-found-not-processed/work/subdir/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/go-files-found-not-processed/work/subdir/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/newer-go-version-needed/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/newer-go-version-needed/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/no-go-files-found/diagnostics.expected 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/no-go-files-found/diagnostics.expected 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/java/ql/integration-tests/all-platforms/java/ecj-tolerate-enum-annotations/Diagnostics.expected b/go/ql/integration-tests/diagnostics/newer-go-version-needed/work/go.sum similarity index 100% rename from java/ql/integration-tests/all-platforms/java/ecj-tolerate-enum-annotations/Diagnostics.expected 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/java/ql/integration-tests/all-platforms/java/legacy b/go/ql/integration-tests/diagnostics/no-go-files-found/diagnostics.expected similarity index 100% rename from java/ql/integration-tests/all-platforms/java/legacy 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..d44205e61f7 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,3 +1,21 @@ +## 1.1.5 + +### Minor Analysis Improvements + +* 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 + +* 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-20-vendor-dirs-baseline.md b/go/ql/lib/change-notes/2024-08-20-vendor-dirs-baseline.md new file mode 100644 index 00000000000..cab6b49f3ba --- /dev/null +++ b/go/ql/lib/change-notes/2024-08-20-vendor-dirs-baseline.md @@ -0,0 +1,4 @@ +--- +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/2024-09-03-local-threat-models-file-environment.md b/go/ql/lib/change-notes/2024-09-03-local-threat-models-file-environment.md new file mode 100644 index 00000000000..5efdd8a369e --- /dev/null +++ b/go/ql/lib/change-notes/2024-09-03-local-threat-models-file-environment.md @@ -0,0 +1,12 @@ +--- +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 +* 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-09-03-outdated-deprecations.md b/go/ql/lib/change-notes/2024-09-03-outdated-deprecations.md new file mode 100644 index 00000000000..4826864fcc2 --- /dev/null +++ b/go/ql/lib/change-notes/2024-09-03-outdated-deprecations.md @@ -0,0 +1,5 @@ +--- +category: breaking +--- +* Deleted many deprecated taint-tracking configurations based on `TaintTracking::Configuration`. +* Deleted the deprecated `explorationLimit` predicate from `DataFlow::Configuration`, use `FlowExploration` instead. 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/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index 26cbcd3f123..df39a9de059 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: 1.1.5 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.caarlos0.env.model.yml b/go/ql/lib/ext/github.com.caarlos0.env.model.yml new file mode 100644 index 00000000000..42f6380c3fa --- /dev/null +++ b/go/ql/lib/ext/github.com.caarlos0.env.model.yml @@ -0,0 +1,16 @@ +extensions: + - addsTo: + pack: codeql/go-all + extensible: sourceModel + data: + - ["github.com/caarlos0/env", "", False, "Parse", "", "", "Argument[0]", "environment", "manual"] + - ["github.com/caarlos0/env", "", False, "ParseAs", "", "", "ReturnValue[0]", "environment", "manual"] + - ["github.com/caarlos0/env", "", False, "ParseAsWithOptions", "", "", "ReturnValue[0]", "environment", "manual"] + - ["github.com/caarlos0/env", "", False, "ParseWithFuncs", "", "", "Argument[0]", "environment", "manual"] + - ["github.com/caarlos0/env", "", False, "ParseWithOptions", "", "", "Argument[0]", "environment", "manual"] + - addsTo: + pack: codeql/go-all + extensible: summaryModel + data: + - ["github.com/caarlos0/env", "", False, "Must", "", "", "Argument[0]", "ReturnValue", "value", "manual"] + - ["github.com/caarlos0/env", "", False, "ToMap", "", "", "Argument[0]", "ReturnValue", "taint", "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.gobuffalo.envy.model.yml b/go/ql/lib/ext/github.com.gobuffalo.envy.model.yml new file mode 100644 index 00000000000..1d0d890560d --- /dev/null +++ b/go/ql/lib/ext/github.com.gobuffalo.envy.model.yml @@ -0,0 +1,12 @@ +extensions: + - addsTo: + pack: codeql/go-all + extensible: sourceModel + data: + - ["github.com/gobuffalo/envy", "", False, "Environ", "", "", "ReturnValue", "environment", "manual"] + - ["github.com/gobuffalo/envy", "", False, "Get", "", "", "ReturnValue", "environment", "manual"] + - ["github.com/gobuffalo/envy", "", False, "GoBin", "", "", "ReturnValue", "environment", "manual"] + - ["github.com/gobuffalo/envy", "", False, "GoPath", "", "", "ReturnValue", "environment", "manual"] + - ["github.com/gobuffalo/envy", "", False, "GoPaths", "", "", "ReturnValue", "environment", "manual"] + - ["github.com/gobuffalo/envy", "", False, "Map", "", "", "ReturnValue", "environment", "manual"] + - ["github.com/gobuffalo/envy", "", False, "MustGet", "", "", "ReturnValue[0]", "environment", "manual"] 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.hashicorp.go-envparse.model.yml b/go/ql/lib/ext/github.com.hashicorp.go-envparse.model.yml new file mode 100644 index 00000000000..73a178fbdcc --- /dev/null +++ b/go/ql/lib/ext/github.com.hashicorp.go-envparse.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/go-all + extensible: sourceModel + data: + - ["github.com/hashicorp/go-envparse", "", False, "Parse", "", "", "ReturnValue", "environment", "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.joho.godotenv.model.yml b/go/ql/lib/ext/github.com.joho.godotenv.model.yml new file mode 100644 index 00000000000..8bd62c5dd0b --- /dev/null +++ b/go/ql/lib/ext/github.com.joho.godotenv.model.yml @@ -0,0 +1,9 @@ +extensions: + - addsTo: + pack: codeql/go-all + extensible: sourceModel + data: + - ["github.com/joho/godotenv", "", False, "Parse", "", "", "ReturnValue", "environment", "manual"] + - ["github.com/joho/godotenv", "", False, "Read", "", "", "ReturnValue", "environment", "manual"] + - ["github.com/joho/godotenv", "", False, "Unmarshal", "", "", "ReturnValue", "environment", "manual"] + - ["github.com/joho/godotenv", "", False, "UnmarshalBytes", "", "", "ReturnValue", "environment", "manual"] diff --git a/go/ql/lib/ext/github.com.kelseyhightower.envconfig.model.yml b/go/ql/lib/ext/github.com.kelseyhightower.envconfig.model.yml new file mode 100644 index 00000000000..71d032a18e1 --- /dev/null +++ b/go/ql/lib/ext/github.com.kelseyhightower.envconfig.model.yml @@ -0,0 +1,11 @@ +extensions: + - addsTo: + pack: codeql/go-all + extensible: sourceModel + data: + - ["github.com/kelseyhightower/envconfig", "", False, "CheckDisallowed", "", "", "Argument[1]", "environment", "manual"] + - ["github.com/kelseyhightower/envconfig", "", False, "MustProcess", "", "", "Argument[1]", "environment", "manual"] + - ["github.com/kelseyhightower/envconfig", "", False, "Process", "", "", "Argument[1]", "environment", "manual"] + - ["github.com/kelseyhightower/envconfig", "", False, "Usage", "", "", "Argument[1]", "environment", "manual"] + - ["github.com/kelseyhightower/envconfig", "", False, "Usagef", "", "", "Argument[1]", "environment", "manual"] + - ["github.com/kelseyhightower/envconfig", "", False, "Usaget", "", "", "Argument[1]", "environment", "manual"] \ No newline at end of file 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/io.fs.model.yml b/go/ql/lib/ext/io.fs.model.yml index e4ced4b775b..ac709c939b6 100644 --- a/go/ql/lib/ext/io.fs.model.yml +++ b/go/ql/lib/ext/io.fs.model.yml @@ -10,8 +10,16 @@ extensions: - ["io/fs", "", False, "Sub", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] - ["io/fs", "DirEntry", True, "Info", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - ["io/fs", "DirEntry", True, "Name", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["io/fs", "File", True, "Read", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - ["io/fs", "FS", True, "Open", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - ["io/fs", "GlobFS", True, "Glob", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - ["io/fs", "ReadDirFS", True, "ReadDir", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - ["io/fs", "ReadFileFS", True, "ReadFile", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - ["io/fs", "SubFS", True, "Sub", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] + - addsTo: + pack: codeql/go-all + extensible: sourceModel + data: + - ["io/fs", "", False, "ReadFile", "", "", "ReturnValue[0]", "file", "manual"] + - ["io/fs", "ReadFileFS", True, "ReadFile", "", "", "ReturnValue[0]", "file", "manual"] + - ["io/fs", "FS", True, "Open", "", "", "ReturnValue[0]", "file", "manual"] \ No newline at end of file diff --git a/go/ql/lib/ext/io.ioutil.model.yml b/go/ql/lib/ext/io.ioutil.model.yml index f5fd2ea0fb4..dda811c97bf 100644 --- a/go/ql/lib/ext/io.ioutil.model.yml +++ b/go/ql/lib/ext/io.ioutil.model.yml @@ -14,3 +14,8 @@ extensions: data: - ["io/ioutil", "", False, "NopCloser", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - ["io/ioutil", "", False, "ReadAll", "", "", "Argument[0]", "ReturnValue[0]", "taint", "manual"] + - addsTo: + pack: codeql/go-all + extensible: sourceModel + data: + - ["io/ioutil", "", False, "ReadFile", "", "", "ReturnValue[0]", "file", "manual"] \ No newline at end of file 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/os.model.yml b/go/ql/lib/ext/os.model.yml index 11a28a0d1fc..3d87eefe43f 100644 --- a/go/ql/lib/ext/os.model.yml +++ b/go/ql/lib/ext/os.model.yml @@ -40,3 +40,19 @@ extensions: - ["os", "", False, "ExpandEnv", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - ["os", "", False, "NewFile", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - ["os", "File", True, "Fd", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] + - ["os", "File", True, "Read", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] + - ["os", "File", True, "ReadAt", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] + - addsTo: + pack: codeql/go-all + extensible: sourceModel + data: + - ["os", "", False, "Environ", "", "", "ReturnValue", "environment", "manual"] # TODO: when sources can have access paths, use .ArrayElement + - ["os", "", False, "ExpandEnv", "", "", "ReturnValue", "environment", "manual"] + - ["os", "", False, "Getenv", "", "", "ReturnValue", "environment", "manual"] + - ["os", "", False, "LookupEnv", "", "", "ReturnValue[0]", "environment", "manual"] + - ["os", "", False, "Open", "", "", "ReturnValue[0]", "file", "manual"] + - ["os", "", False, "OpenFile", "", "", "ReturnValue[0]", "file", "manual"] + - ["os", "", False, "ReadFile", "", "", "ReturnValue[0]", "file", "manual"] + - ["os", "", False, "UserCacheDir", "", "", "ReturnValue[0]", "environment", "manual"] + - ["os", "", False, "UserConfigDir", "", "", "ReturnValue[0]", "environment", "manual"] + - ["os", "", False, "UserHomeDir", "", "", "ReturnValue[0]", "environment", "manual"] diff --git a/go/ql/lib/ext/syscall.model.yml b/go/ql/lib/ext/syscall.model.yml index 14ddd68b402..9d65f2bedbd 100644 --- a/go/ql/lib/ext/syscall.model.yml +++ b/go/ql/lib/ext/syscall.model.yml @@ -20,3 +20,9 @@ extensions: - ["syscall", "Conn", True, "SyscallConn", "", "", "Argument[receiver]", "ReturnValue[0]", "taint", "manual"] - ["syscall", "RawConn", True, "Read", "", "", "Argument[receiver]", "Argument[0]", "taint", "manual"] - ["syscall", "RawConn", True, "Write", "", "", "Argument[0]", "Argument[receiver]", "taint", "manual"] + - addsTo: + pack: codeql/go-all + extensible: sourceModel + data: + - ["syscall", "", False, "Environ", "", "", "ReturnValue", "environment", "manual"] + - ["syscall", "", False, "Getenv", "", "", "ReturnValue[0]", "environment", "manual"] \ No newline at end of file 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..b81046b49cd 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: 1.1.6-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/ExternalFlow.qll b/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll index 3cd177f92eb..d905201fd45 100644 --- a/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll +++ b/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll @@ -213,16 +213,30 @@ predicate interpretModelForTest(QlBuiltins::ExtensionId madId, string model) { ) } +bindingset[p] +private string cleanPackage(string p) { + exists(string noPrefix | + p = fixedVersionPrefix() + noPrefix + or + not p = fixedVersionPrefix() + any(string s) and + noPrefix = p + | + result = noPrefix.regexpReplaceAll(majorVersionSuffixRegex(), "") + ) +} + private predicate relevantPackage(string package) { - sourceModel(package, _, _, _, _, _, _, _, _, _) or - sinkModel(package, _, _, _, _, _, _, _, _, _) or - summaryModel(package, _, _, _, _, _, _, _, _, _, _) + exists(string p | package = cleanPackage(p) | + sourceModel(p, _, _, _, _, _, _, _, _, _) or + sinkModel(p, _, _, _, _, _, _, _, _, _) or + summaryModel(p, _, _, _, _, _, _, _, _, _, _) + ) } private predicate packageLink(string shortpkg, string longpkg) { relevantPackage(shortpkg) and relevantPackage(longpkg) and - longpkg.prefix(longpkg.indexOf(".")) = shortpkg + longpkg.prefix(longpkg.indexOf("/")) = shortpkg } private predicate canonicalPackage(string package) { @@ -245,26 +259,28 @@ predicate modelCoverage(string package, int pkgs, string kind, string part, int part = "source" and n = strictcount(string subpkg, string type, boolean subtypes, string name, string signature, - string ext, string output, string provenance | + string ext, string output, string provenance, string x | canonicalPkgLink(package, subpkg) and - sourceModel(subpkg, type, subtypes, name, signature, ext, output, kind, provenance, _) + subpkg = cleanPackage(x) and + sourceModel(x, type, subtypes, name, signature, ext, output, kind, provenance, _) ) or part = "sink" and n = strictcount(string subpkg, string type, boolean subtypes, string name, string signature, - string ext, string input, string provenance | + string ext, string input, string provenance, string x | canonicalPkgLink(package, subpkg) and - sinkModel(subpkg, type, subtypes, name, signature, ext, input, kind, provenance, _) + subpkg = cleanPackage(x) and + sinkModel(x, type, subtypes, name, signature, ext, input, kind, provenance, _) ) or part = "summary" and n = strictcount(string subpkg, string type, boolean subtypes, string name, string signature, - string ext, string input, string output, string provenance | + string ext, string input, string output, string provenance, string x | canonicalPkgLink(package, subpkg) and - summaryModel(subpkg, type, subtypes, name, signature, ext, input, output, kind, provenance, - _) + subpkg = cleanPackage(x) and + summaryModel(x, type, subtypes, name, signature, ext, input, output, kind, provenance, _) ) ) } 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/lib/semmle/go/security/Xss.qll b/go/ql/lib/semmle/go/security/Xss.qll index 3c76ffbeea2..f11dc12bf76 100644 --- a/go/ql/lib/semmle/go/security/Xss.qll +++ b/go/ql/lib/semmle/go/security/Xss.qll @@ -49,6 +49,10 @@ module SharedXss { override Locatable getAssociatedLoc() { result = this.getRead().getEnclosingTextNode() } } + private class DefaultSink extends Sink { + DefaultSink() { sinkNode(this, ["html-injection", "js-injection"]) } + } + /** * Holds if `body` may send a response with a content type other than HTML. */ diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index 36470f89eba..88ad1b3ceec 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 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/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index 42da17b3841..8033d980afa 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.6 diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 4df9de83c21..1e6ffa6dac5 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.7-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/library-tests/semmle/go/Function/TypeParamType.expected b/go/ql/test/library-tests/semmle/go/Function/TypeParamType.expected index bb614a4b41c..49a00ade7ab 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,161 @@ -| 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 } | +| 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 { } | +| github.com/anotherpkg.GenericFunctionInAnotherPackage | 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 } | +| 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 { } | +| runtime/internal/atomic.Pointer.CompareAndSwap | 0 | T | interface { } | +| runtime/internal/atomic.Pointer.CompareAndSwapNoWB | 0 | T | interface { } | +| runtime/internal/atomic.Pointer.Load | 0 | T | interface { } | +| runtime/internal/atomic.Pointer.Store | 0 | T | interface { } | +| runtime/internal/atomic.Pointer.StoreNoWB | 0 | T | 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.Clip | 0 | S | interface { ~[]E } | +| slices.Clip | 1 | E | interface { } | +| slices.Clone | 0 | S | interface { ~[]E } | +| slices.Clone | 1 | 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.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.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.swap | 0 | E | interface { } | +| slices.swapRangeCmpFunc | 0 | E | interface { } | +| slices.swapRangeOrdered | 0 | E | Ordered | +| slices.symMergeCmpFunc | 0 | E | interface { } | +| slices.symMergeOrdered | 0 | E | Ordered | +| 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..9170c0d35ed 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,5 @@ import go -from TypeParamType tpt -select tpt.getParamName(), tpt.getConstraint().pp() +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/dataflow/DefaultTaintSanitizer/DefaultSanitizer.expected b/go/ql/test/library-tests/semmle/go/dataflow/DefaultTaintSanitizer/DefaultSanitizer.expected index 7370d0f9a34..2bc14e8d62e 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/DefaultTaintSanitizer/DefaultSanitizer.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/DefaultTaintSanitizer/DefaultSanitizer.expected @@ -1,13 +1,21 @@ models -| 1 | Summary: io; Reader; true; Read; ; ; Argument[receiver]; Argument[0]; taint; manual | -| 2 | Source: net/http; Request; true; Body; ; ; ; remote; manual | +| 1 | Summary: io/fs; File; true; Read; ; ; Argument[receiver]; Argument[0]; taint; manual | +| 2 | Summary: io; Reader; true; Read; ; ; Argument[receiver]; Argument[0]; taint; manual | +| 3 | Source: net/http; Request; true; Body; ; ; ; remote; manual | +| 4 | Summary: os; File; true; Read; ; ; Argument[receiver]; Argument[0]; taint; manual | edges | Builtin.go:6:2:6:2 | definition of b | Builtin.go:8:9:8:17 | type conversion | provenance | | -| Builtin.go:7:2:7:15 | selection of Body | Builtin.go:6:2:6:2 | definition of b | provenance | Src:MaD:2 MaD:1 | +| Builtin.go:7:2:7:15 | selection of Body | Builtin.go:6:2:6:2 | definition of b | provenance | Src:MaD:3 MaD:1 | +| Builtin.go:7:2:7:15 | selection of Body | Builtin.go:6:2:6:2 | definition of b | provenance | Src:MaD:3 MaD:2 | +| Builtin.go:7:2:7:15 | selection of Body | Builtin.go:6:2:6:2 | definition of b | provenance | Src:MaD:3 MaD:4 | | Builtin.go:12:2:12:2 | definition of b | Builtin.go:17:9:17:17 | type conversion | provenance | | -| Builtin.go:13:2:13:15 | selection of Body | Builtin.go:12:2:12:2 | definition of b | provenance | Src:MaD:2 MaD:1 | +| Builtin.go:13:2:13:15 | selection of Body | Builtin.go:12:2:12:2 | definition of b | provenance | Src:MaD:3 MaD:1 | +| Builtin.go:13:2:13:15 | selection of Body | Builtin.go:12:2:12:2 | definition of b | provenance | Src:MaD:3 MaD:2 | +| Builtin.go:13:2:13:15 | selection of Body | Builtin.go:12:2:12:2 | definition of b | provenance | Src:MaD:3 MaD:4 | | Builtin.go:21:2:21:2 | definition of b | Builtin.go:24:10:24:18 | type conversion | provenance | | -| Builtin.go:22:2:22:15 | selection of Body | Builtin.go:21:2:21:2 | definition of b | provenance | Src:MaD:2 MaD:1 | +| Builtin.go:22:2:22:15 | selection of Body | Builtin.go:21:2:21:2 | definition of b | provenance | Src:MaD:3 MaD:1 | +| Builtin.go:22:2:22:15 | selection of Body | Builtin.go:21:2:21:2 | definition of b | provenance | Src:MaD:3 MaD:2 | +| Builtin.go:22:2:22:15 | selection of Body | Builtin.go:21:2:21:2 | definition of b | provenance | Src:MaD:3 MaD:4 | nodes | Builtin.go:6:2:6:2 | definition of b | semmle.label | definition of b | | Builtin.go:7:2:7:15 | selection of Body | semmle.label | selection of Body | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/go.mod b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/go.mod new file mode 100644 index 00000000000..90c1c9f5660 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/go.mod @@ -0,0 +1,9 @@ +module test + +go 1.22.5 + +require ( + github.com/hashicorp/go-envparse v0.1.0 + github.com/joho/godotenv v1.5.1 + github.com/kelseyhightower/envconfig v1.4.0 +) diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/Gorm/QueryString.expected b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/test.expected similarity index 100% rename from go/ql/test/library-tests/semmle/go/frameworks/SQL/Gorm/QueryString.expected rename to go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/test.expected diff --git a/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/test.ext.yml b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/test.ext.yml new file mode 100644 index 00000000000..b7075d8e7ae --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/test.ext.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/threat-models + extensible: threatModelConfiguration + data: + - ["environment", true, 0] \ No newline at end of file diff --git a/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/test.go b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/test.go new file mode 100644 index 00000000000..515888f570e --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/test.go @@ -0,0 +1,116 @@ +package test + +import ( + "fmt" + "github.com/caarlos0/env" + "github.com/gobuffalo/envy" + "github.com/hashicorp/go-envparse" + "github.com/joho/godotenv" + "github.com/kelseyhightower/envconfig" + "os" + "syscall" +) + +func osEnvironmentVariables() { + home := os.Getenv("HOME") // $ source + + port, ok := os.LookupEnv("PORT") // $ source + if !ok { + port = "3000" + } + + for _, e := range os.Environ() { // $ source + _ = e + } + + fmt.Printf("HOME: %s\n", home) + fmt.Printf("PORT: %s\n", port) +} + +type ServerConfig struct { + Port int `envconfig:"PORT"` + Host string `envconfig:"HOST"` +} + +func envconfigEnvironmentVariables() { + var cfg ServerConfig + envconfig.Process("myapp", &cfg) // $ source +} + +func godotenvEnvironmentVariables() { + var err error + var username, greeting string + + users, err := godotenv.Read("user.env") // $ source + if err != nil { + return + } + + username = users["USERNAME"] + + greetings, err := godotenv.Unmarshal("HELLO=hello") // $ source + if err != nil { + return + } + + greeting = greetings["HELLO"] + + fmt.Printf("%s, %s!\n", greeting, username) +} + +func envparseEnvironmentVariables() { + f, err := os.Open("file.txt") + if err != nil { + return + } + defer f.Close() + envVars, err := envparse.Parse(f) // $ source + + if err != nil { + return + } + + fmt.Printf("HOME: %s\n", envVars["HOME"]) +} + +func caarlos0EnvironmentVariables() { + type config struct { + Home string `env:"HOME"` + Port int `env:"PORT"` + } + + cfg := config{} + err := env.Parse(&cfg) // $ source + + fmt.Printf("HOME: %s\n", cfg.Home) + + cfg, err = env.ParseAs[config]() // $ source + + if err != nil { + return + } + + fmt.Printf("HOME: %s\n", cfg.Home) +} + +func envyEnvironmentVariables() { + goPath := envy.GoPath() // $ source + + fmt.Printf("GOPATH: %s\n", goPath) + + homeDir := envy.MustGet("HOME") // $ source + + fmt.Printf("HOME: %s\n", homeDir) +} + +func syscallEnvironmentVariables() { + for _, envVar := range syscall.Environ() { // $ source + fmt.Println("%s", envVar) + } + + home, found := syscall.Getenv("HOME") // $ source + if !found { + return + } + fmt.Println("HOME: %s", home) +} diff --git a/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/test.ql b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/test.ql new file mode 100644 index 00000000000..db6bbb1a2d1 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/test.ql @@ -0,0 +1,19 @@ +import go +import ModelValidation +import TestUtilities.InlineExpectationsTest + +module SourceTest implements TestSig { + string getARelevantTag() { result = "source" } + + predicate hasActualResult(Location location, string element, string tag, string value) { + exists(ThreatModelFlowSource s | + s.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), + location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and + element = s.toString() and + value = "" and + tag = "source" + ) + } +} + +import MakeTest diff --git a/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/vendor/github.com/caarlos0/env/stub.go b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/vendor/github.com/caarlos0/env/stub.go new file mode 100644 index 00000000000..9223a3f4677 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/vendor/github.com/caarlos0/env/stub.go @@ -0,0 +1,32 @@ +package env + +type Options struct{} + +func Must[T any](t T, err error) T { + if err != nil { + panic(err) + } + return t +} + +func Parse(v interface{}) error { + return nil +} + +func ParseAs[T any]() (T, error) { + var t T + return t, nil +} + +func ParseAsWithOptions[T any](opts Options) (T, error) { + var t T + return t, nil +} + +func ParseWithOptions(v interface{}, opts Options) error { + return nil +} + +func ToMap(env []string) map[string]string { + return nil +} diff --git a/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/vendor/github.com/gobuffalo/envy/stub.go b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/vendor/github.com/gobuffalo/envy/stub.go new file mode 100644 index 00000000000..895b82e9a10 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/vendor/github.com/gobuffalo/envy/stub.go @@ -0,0 +1,29 @@ +package envy + +func Environ() []string { + return nil +} + +func Get(key string) string { + return "" +} + +func GoPath() string { + return "" +} + +func GoPaths() []string { + return nil +} + +func GoBin() string { + return "" +} + +func Map() map[string]string { + return nil +} + +func MustGet(key string) string { + return "" +} diff --git a/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/vendor/github.com/hashicorp/go-envparse/stub.go b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/vendor/github.com/hashicorp/go-envparse/stub.go new file mode 100644 index 00000000000..0ce38bd0173 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/vendor/github.com/hashicorp/go-envparse/stub.go @@ -0,0 +1,7 @@ +package envparse + +import "io" + +func Parse(r io.Reader) (map[string]string, error) { + return nil, nil +} diff --git a/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/vendor/github.com/joho/godotenv/stub.go b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/vendor/github.com/joho/godotenv/stub.go new file mode 100644 index 00000000000..eba88b5050c --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/vendor/github.com/joho/godotenv/stub.go @@ -0,0 +1,39 @@ +package godotenv + +import "io" + +func Exec(filenames []string, cmd string, cmdArgs []string, overload bool) error { + return nil +} + +func Load(filenames ...string) (err error) { + return nil +} + +func Marshal(envMap map[string]string) (string, error) { + return "", nil +} + +func Overload(filenames ...string) (err error) { + return nil +} + +func Parse(r io.Reader) (map[string]string, error) { + return nil, nil +} + +func Read(filenames ...string) (envMap map[string]string, err error) { + return nil, nil +} + +func Unmarshal(str string) (envMap map[string]string, err error) { + return nil, nil +} + +func UnmarshalBytes(src []byte) (map[string]string, error) { + return nil, nil +} + +func Write(envMap map[string]string, filename string) error { + return nil +} diff --git a/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/vendor/github.com/kelseyhightower/envconfig/stub.go b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/vendor/github.com/kelseyhightower/envconfig/stub.go new file mode 100644 index 00000000000..856b8ebb6ef --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/vendor/github.com/kelseyhightower/envconfig/stub.go @@ -0,0 +1,30 @@ +package envconfig + +import ( + "io" + "text/template" +) + +func CheckDisallowed(prefix string, cfg interface{}) error { + return nil +} + +func MustProcess(prefix string, cfg interface{}) { + +} + +func Process(prefix string, cfg interface{}) error { + return nil +} + +func Usage(prefix string, spec interface{}) error { + return nil +} + +func Usagef(prefix string, spec interface{}, out io.Writer, format string) error { + return nil +} + +func Usaget(prefix string, spec interface{}, out io.Writer, tmpl *template.Template) error { + return nil +} diff --git a/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/vendor/modules.txt b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/vendor/modules.txt new file mode 100644 index 00000000000..0b7968eaec9 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/environment/vendor/modules.txt @@ -0,0 +1,9 @@ +# github.com/hashicorp/go-envparse v0.1.0 +## explicit +github.com/hashicorp/go-envparse +# github.com/joho/godotenv v1.5.1 +## explicit +github.com/joho/godotenv +# github.com/kelseyhightower/envconfig v1.4.0 +## explicit +github.com/kelseyhightower/envconfig diff --git a/go/ql/test/library-tests/semmle/go/frameworks/SQL/Sqlx/QueryString.expected b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/file/test.expected similarity index 100% rename from go/ql/test/library-tests/semmle/go/frameworks/SQL/Sqlx/QueryString.expected rename to go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/file/test.expected diff --git a/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/file/test.ext.yml b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/file/test.ext.yml new file mode 100644 index 00000000000..5e21e41103f --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/file/test.ext.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/threat-models + extensible: threatModelConfiguration + data: + - ["file", true, 0] \ No newline at end of file diff --git a/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/file/test.go b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/file/test.go new file mode 100644 index 00000000000..1a145751476 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/file/test.go @@ -0,0 +1,70 @@ +package test + +import ( + "io/fs" + "io/ioutil" + "os" +) + +func open() { + file, err := os.Open("file.txt") // $ source + if err != nil { + return + } + defer file.Close() + file.Read([]byte{1, 2, 3}) +} + +func openFile() { + file, err := os.OpenFile("file.txt", os.O_RDWR, 0) // $source + if err != nil { + return + } + defer file.Close() + file.Read([]byte{1, 2, 3}) +} + +func readFile() { + data, err := os.ReadFile("file.txt") // $source + if err != nil { + return + } + _ = data +} + +func readFileIoUtil() { + data, err := ioutil.ReadFile("file.txt") // $source + if err != nil { + return + } + _ = data +} + +func getFileFS() fs.ReadFileFS { + return nil +} + +func readFileFs() { + data, err := fs.ReadFile(os.DirFS("."), "file.txt") // $source + if err != nil { + return + } + _ = data + + dir := getFileFS() + data, err = dir.ReadFile("file.txt") // $source + + if err != nil { + return + } + _ = data +} + +func fsOpen() { + file, err := os.DirFS(".").Open("file.txt") // $source + if err != nil { + return + } + defer file.Close() + file.Read([]byte{1, 2, 3}) +} diff --git a/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/file/test.ql b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/file/test.ql new file mode 100644 index 00000000000..db6bbb1a2d1 --- /dev/null +++ b/go/ql/test/library-tests/semmle/go/dataflow/flowsources/local/file/test.ql @@ -0,0 +1,19 @@ +import go +import ModelValidation +import TestUtilities.InlineExpectationsTest + +module SourceTest implements TestSig { + string getARelevantTag() { result = "source" } + + predicate hasActualResult(Location location, string element, string tag, string value) { + exists(ThreatModelFlowSource s | + s.hasLocationInfo(location.getFile().getAbsolutePath(), location.getStartLine(), + location.getStartColumn(), location.getEndLine(), location.getEndColumn()) and + element = s.toString() and + value = "" and + tag = "source" + ) + } +} + +import MakeTest 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/Echo/ReflectedXss.expected b/go/ql/test/library-tests/semmle/go/frameworks/Echo/ReflectedXss.expected index 70df2a52659..ea320848ca5 100644 --- a/go/ql/test/library-tests/semmle/go/frameworks/Echo/ReflectedXss.expected +++ b/go/ql/test/library-tests/semmle/go/frameworks/Echo/ReflectedXss.expected @@ -28,15 +28,19 @@ edges | test.go:51:2:51:30 | ... := ...[0] | test.go:52:16:52:37 | index expression | provenance | Src:MaD:10 | | test.go:57:2:57:46 | ... := ...[0] | test.go:58:13:58:22 | fileHeader | provenance | Src:MaD:11 | | test.go:58:2:58:29 | ... := ...[0] | test.go:60:2:60:5 | file | provenance | | -| test.go:58:13:58:22 | fileHeader | test.go:58:2:58:29 | ... := ...[0] | provenance | MaD:16 | +| test.go:58:13:58:22 | fileHeader | test.go:58:2:58:29 | ... := ...[0] | provenance | MaD:17 | | test.go:59:2:59:7 | definition of buffer | test.go:61:20:61:25 | buffer | provenance | | | test.go:60:2:60:5 | file | test.go:59:2:59:7 | definition of buffer | provenance | MaD:15 | +| test.go:60:2:60:5 | file | test.go:59:2:59:7 | definition of buffer | provenance | MaD:16 | +| test.go:60:2:60:5 | file | test.go:59:2:59:7 | definition of buffer | provenance | MaD:18 | | test.go:66:2:66:31 | ... := ...[0] | test.go:67:16:67:41 | index expression | provenance | Src:MaD:12 | | test.go:72:2:72:31 | ... := ...[0] | test.go:74:13:74:22 | fileHeader | provenance | Src:MaD:12 | | test.go:74:2:74:29 | ... := ...[0] | test.go:76:2:76:5 | file | provenance | | -| test.go:74:13:74:22 | fileHeader | test.go:74:2:74:29 | ... := ...[0] | provenance | MaD:16 | +| test.go:74:13:74:22 | fileHeader | test.go:74:2:74:29 | ... := ...[0] | provenance | MaD:17 | | test.go:75:2:75:7 | definition of buffer | test.go:77:20:77:25 | buffer | provenance | | | test.go:76:2:76:5 | file | test.go:75:2:75:7 | definition of buffer | provenance | MaD:15 | +| test.go:76:2:76:5 | file | test.go:75:2:75:7 | definition of buffer | provenance | MaD:16 | +| test.go:76:2:76:5 | file | test.go:75:2:75:7 | definition of buffer | provenance | MaD:18 | | test.go:82:2:82:32 | ... := ...[0] | test.go:83:16:83:24 | selection of Value | provenance | Src:MaD:13 | | test.go:88:13:88:25 | call to Cookies | test.go:89:16:89:31 | selection of Value | provenance | Src:MaD:14 | | test.go:99:11:99:15 | &... | test.go:100:16:100:21 | selection of s | provenance | Src:MaD:3 | @@ -49,7 +53,7 @@ edges | test.go:136:11:136:32 | call to Param | test.go:137:29:137:41 | type conversion | provenance | Src:MaD:4 | | test.go:148:11:148:32 | call to Param | test.go:149:30:149:34 | param | provenance | Src:MaD:4 | | test.go:149:12:149:35 | call to NewReader | test.go:150:31:150:36 | reader | provenance | | -| test.go:149:30:149:34 | param | test.go:149:12:149:35 | call to NewReader | provenance | MaD:17 | +| test.go:149:30:149:34 | param | test.go:149:12:149:35 | call to NewReader | provenance | MaD:19 | | test.go:164:11:164:32 | call to Param | test.go:165:23:165:35 | type conversion | provenance | Src:MaD:4 | models | 1 | Summary: github.com/labstack/echo; Context; true; Get; ; ; Argument[receiver]; ReturnValue; taint; manual | @@ -66,9 +70,11 @@ models | 12 | Source: github.com/labstack/echo; Context; true; MultipartForm; ; ; ReturnValue[0]; remote; manual | | 13 | Source: github.com/labstack/echo; Context; true; Cookie; ; ; ReturnValue[0]; remote; manual | | 14 | Source: github.com/labstack/echo; Context; true; Cookies; ; ; ReturnValue[0]; remote; manual | -| 15 | Summary: io; Reader; true; Read; ; ; Argument[receiver]; Argument[0]; taint; manual | -| 16 | Summary: mime/multipart; FileHeader; true; Open; ; ; Argument[receiver]; ReturnValue[0]; taint; manual | -| 17 | Summary: strings; ; false; NewReader; ; ; Argument[0]; ReturnValue; taint; manual | +| 15 | Summary: io/fs; File; true; Read; ; ; Argument[receiver]; Argument[0]; taint; manual | +| 16 | Summary: io; Reader; true; Read; ; ; Argument[receiver]; Argument[0]; taint; manual | +| 17 | Summary: mime/multipart; FileHeader; true; Open; ; ; Argument[receiver]; ReturnValue[0]; taint; manual | +| 18 | Summary: os; File; true; Read; ; ; Argument[receiver]; Argument[0]; taint; manual | +| 19 | Summary: strings; ; false; NewReader; ; ; Argument[0]; ReturnValue; taint; manual | nodes | test.go:15:11:15:32 | call to Param | semmle.label | call to Param | | test.go:16:16:16:20 | param | semmle.label | param | 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.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/InconsistentCode/UnhandledCloseWritableHandle/UnhandledCloseWritableHandle.expected b/go/ql/test/query-tests/InconsistentCode/UnhandledCloseWritableHandle/UnhandledCloseWritableHandle.expected index e5ad074d25d..dc54af70dbb 100644 --- a/go/ql/test/query-tests/InconsistentCode/UnhandledCloseWritableHandle/UnhandledCloseWritableHandle.expected +++ b/go/ql/test/query-tests/InconsistentCode/UnhandledCloseWritableHandle/UnhandledCloseWritableHandle.expected @@ -1,19 +1,30 @@ +#select +| tests.go:9:8:9:8 | f | tests.go:31:5:31:78 | ... := ...[0] | tests.go:9:8:9:8 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:31:15:31:78 | call to OpenFile | call to OpenFile | +| tests.go:9:8:9:8 | f | tests.go:45:5:45:76 | ... := ...[0] | tests.go:9:8:9:8 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:45:15:45:76 | call to OpenFile | call to OpenFile | +| tests.go:14:3:14:3 | f | tests.go:31:5:31:78 | ... := ...[0] | tests.go:14:3:14:3 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:31:15:31:78 | call to OpenFile | call to OpenFile | +| tests.go:14:3:14:3 | f | tests.go:45:5:45:76 | ... := ...[0] | tests.go:14:3:14:3 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:45:15:45:76 | call to OpenFile | call to OpenFile | +| tests.go:56:3:56:3 | f | tests.go:54:5:54:78 | ... := ...[0] | tests.go:56:3:56:3 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:54:15:54:78 | call to OpenFile | call to OpenFile | +| tests.go:68:3:68:3 | f | tests.go:66:5:66:76 | ... := ...[0] | tests.go:68:3:68:3 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:66:15:66:76 | call to OpenFile | call to OpenFile | +| tests.go:110:9:110:9 | f | tests.go:108:5:108:78 | ... := ...[0] | tests.go:110:9:110:9 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:108:15:108:78 | call to OpenFile | call to OpenFile | +| tests.go:129:3:129:3 | f | tests.go:125:5:125:78 | ... := ...[0] | tests.go:129:3:129:3 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:125:15:125:78 | call to OpenFile | call to OpenFile | edges | tests.go:8:24:8:24 | definition of f | tests.go:9:8:9:8 | f | provenance | | | tests.go:12:32:12:32 | definition of f | tests.go:13:13:13:13 | capture variable f | provenance | | | tests.go:13:13:13:13 | capture variable f | tests.go:14:3:14:3 | f | provenance | | -| tests.go:31:5:31:78 | ... := ...[0] | tests.go:32:21:32:21 | f | provenance | | -| tests.go:31:5:31:78 | ... := ...[0] | tests.go:33:29:33:29 | f | provenance | | +| tests.go:31:5:31:78 | ... := ...[0] | tests.go:32:21:32:21 | f | provenance | Src:MaD:1 | +| tests.go:31:5:31:78 | ... := ...[0] | tests.go:33:29:33:29 | f | provenance | Src:MaD:1 | | tests.go:32:21:32:21 | f | tests.go:8:24:8:24 | definition of f | provenance | | | tests.go:33:29:33:29 | f | tests.go:12:32:12:32 | definition of f | provenance | | -| tests.go:45:5:45:76 | ... := ...[0] | tests.go:46:21:46:21 | f | provenance | | -| tests.go:45:5:45:76 | ... := ...[0] | tests.go:47:29:47:29 | f | provenance | | +| tests.go:45:5:45:76 | ... := ...[0] | tests.go:46:21:46:21 | f | provenance | Src:MaD:1 | +| tests.go:45:5:45:76 | ... := ...[0] | tests.go:47:29:47:29 | f | provenance | Src:MaD:1 | | tests.go:46:21:46:21 | f | tests.go:8:24:8:24 | definition of f | provenance | | | tests.go:47:29:47:29 | f | tests.go:12:32:12:32 | definition of f | provenance | | -| tests.go:54:5:54:78 | ... := ...[0] | tests.go:56:3:56:3 | f | provenance | | -| tests.go:66:5:66:76 | ... := ...[0] | tests.go:68:3:68:3 | f | provenance | | -| tests.go:108:5:108:78 | ... := ...[0] | tests.go:110:9:110:9 | f | provenance | | -| tests.go:125:5:125:78 | ... := ...[0] | tests.go:129:3:129:3 | f | provenance | | +| tests.go:54:5:54:78 | ... := ...[0] | tests.go:56:3:56:3 | f | provenance | Src:MaD:1 | +| tests.go:66:5:66:76 | ... := ...[0] | tests.go:68:3:68:3 | f | provenance | Src:MaD:1 | +| tests.go:108:5:108:78 | ... := ...[0] | tests.go:110:9:110:9 | f | provenance | Src:MaD:1 | +| tests.go:125:5:125:78 | ... := ...[0] | tests.go:129:3:129:3 | f | provenance | Src:MaD:1 | +models +| 1 | Source: os; ; false; OpenFile; ; ; ReturnValue[0]; file; manual | nodes | tests.go:8:24:8:24 | definition of f | semmle.label | definition of f | | tests.go:9:8:9:8 | f | semmle.label | f | @@ -35,12 +46,3 @@ nodes | tests.go:125:5:125:78 | ... := ...[0] | semmle.label | ... := ...[0] | | tests.go:129:3:129:3 | f | semmle.label | f | subpaths -#select -| tests.go:9:8:9:8 | f | tests.go:31:5:31:78 | ... := ...[0] | tests.go:9:8:9:8 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:31:15:31:78 | call to OpenFile | call to OpenFile | -| tests.go:9:8:9:8 | f | tests.go:45:5:45:76 | ... := ...[0] | tests.go:9:8:9:8 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:45:15:45:76 | call to OpenFile | call to OpenFile | -| tests.go:14:3:14:3 | f | tests.go:31:5:31:78 | ... := ...[0] | tests.go:14:3:14:3 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:31:15:31:78 | call to OpenFile | call to OpenFile | -| tests.go:14:3:14:3 | f | tests.go:45:5:45:76 | ... := ...[0] | tests.go:14:3:14:3 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:45:15:45:76 | call to OpenFile | call to OpenFile | -| tests.go:56:3:56:3 | f | tests.go:54:5:54:78 | ... := ...[0] | tests.go:56:3:56:3 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:54:15:54:78 | call to OpenFile | call to OpenFile | -| tests.go:68:3:68:3 | f | tests.go:66:5:66:76 | ... := ...[0] | tests.go:68:3:68:3 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:66:15:66:76 | call to OpenFile | call to OpenFile | -| tests.go:110:9:110:9 | f | tests.go:108:5:108:78 | ... := ...[0] | tests.go:110:9:110:9 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:108:15:108:78 | call to OpenFile | call to OpenFile | -| tests.go:129:3:129:3 | f | tests.go:125:5:125:78 | ... := ...[0] | tests.go:129:3:129:3 | f | File handle may be writable as a result of data flow from a $@ and closing it may result in data loss upon failure, which is not handled explicitly. | tests.go:125:15:125:78 | call to OpenFile | call to OpenFile | diff --git a/go/ql/test/query-tests/InconsistentCode/UnhandledCloseWritableHandle/UnhandledCloseWritableHandle.qlref b/go/ql/test/query-tests/InconsistentCode/UnhandledCloseWritableHandle/UnhandledCloseWritableHandle.qlref index 69ed86999a5..579e4344e89 100644 --- a/go/ql/test/query-tests/InconsistentCode/UnhandledCloseWritableHandle/UnhandledCloseWritableHandle.qlref +++ b/go/ql/test/query-tests/InconsistentCode/UnhandledCloseWritableHandle/UnhandledCloseWritableHandle.qlref @@ -1 +1,2 @@ -InconsistentCode/UnhandledCloseWritableHandle.ql +query: InconsistentCode/UnhandledCloseWritableHandle.ql +postprocess: TestUtilities/PrettyPrintModels.ql 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/Security/CWE-190/AllocationSizeOverflow.expected b/go/ql/test/query-tests/Security/CWE-190/AllocationSizeOverflow.expected index b7a2499b9da..3a9de1ebe60 100644 --- a/go/ql/test/query-tests/Security/CWE-190/AllocationSizeOverflow.expected +++ b/go/ql/test/query-tests/Security/CWE-190/AllocationSizeOverflow.expected @@ -1,7 +1,18 @@ +#select +| AllocationSizeOverflow.go:10:10:10:22 | call to len | AllocationSizeOverflow.go:6:2:6:33 | ... := ...[0] | AllocationSizeOverflow.go:10:10:10:22 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | AllocationSizeOverflow.go:11:25:11:28 | size | allocation | AllocationSizeOverflow.go:6:2:6:33 | ... := ...[0] | potentially large value | +| tst2.go:10:22:10:30 | call to len | tst2.go:9:2:9:37 | ... := ...[0] | tst2.go:10:22:10:30 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst2.go:10:22:10:32 | ...+... | allocation | tst2.go:9:2:9:37 | ... := ...[0] | potentially large value | +| tst2.go:15:22:15:30 | call to len | tst2.go:14:2:14:29 | ... := ...[0] | tst2.go:15:22:15:30 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst2.go:15:22:15:32 | ...+... | allocation | tst2.go:14:2:14:29 | ... := ...[0] | potentially large value | +| tst3.go:7:22:7:34 | call to len | tst3.go:6:2:6:31 | ... := ...[0] | tst3.go:7:22:7:34 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst3.go:7:22:7:36 | ...+... | allocation | tst3.go:6:2:6:31 | ... := ...[0] | potentially large value | +| tst3.go:24:16:24:28 | call to len | tst3.go:6:2:6:31 | ... := ...[0] | tst3.go:24:16:24:28 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst3.go:27:24:27:32 | newlength | allocation | tst3.go:6:2:6:31 | ... := ...[0] | potentially large value | +| tst3.go:32:16:32:28 | call to len | tst3.go:6:2:6:31 | ... := ...[0] | tst3.go:32:16:32:28 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst3.go:36:23:36:31 | newlength | allocation | tst3.go:6:2:6:31 | ... := ...[0] | potentially large value | +| tst.go:15:22:15:34 | call to len | tst.go:14:2:14:30 | ... = ...[0] | tst.go:15:22:15:34 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst.go:15:22:15:36 | ...+... | allocation | tst.go:14:2:14:30 | ... = ...[0] | potentially large value | +| tst.go:21:22:21:34 | call to len | tst.go:20:2:20:31 | ... = ...[0] | tst.go:21:22:21:34 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst.go:21:22:21:36 | ...+... | allocation | tst.go:20:2:20:31 | ... = ...[0] | potentially large value | +| tst.go:27:26:27:38 | call to len | tst.go:26:2:26:31 | ... = ...[0] | tst.go:27:26:27:38 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst.go:27:26:27:40 | ...+... | allocation | tst.go:26:2:26:31 | ... = ...[0] | potentially large value | +| tst.go:35:22:35:34 | call to len | tst.go:34:2:34:30 | ... = ...[0] | tst.go:35:22:35:34 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst.go:35:22:35:36 | ...+... | allocation | tst.go:34:2:34:30 | ... = ...[0] | potentially large value | edges | AllocationSizeOverflow.go:6:2:6:33 | ... := ...[0] | AllocationSizeOverflow.go:10:14:10:21 | jsonData | provenance | | | AllocationSizeOverflow.go:10:14:10:21 | jsonData | AllocationSizeOverflow.go:10:10:10:22 | call to len | provenance | Config | -| tst2.go:9:2:9:37 | ... := ...[0] | tst2.go:10:26:10:29 | data | provenance | | +| tst2.go:9:2:9:37 | ... := ...[0] | tst2.go:10:26:10:29 | data | provenance | Src:MaD:1 | | tst2.go:10:26:10:29 | data | tst2.go:10:22:10:30 | call to len | provenance | Config | | tst2.go:14:2:14:29 | ... := ...[0] | tst2.go:15:26:15:29 | data | provenance | | | tst2.go:15:26:15:29 | data | tst2.go:15:22:15:30 | call to len | provenance | Config | @@ -19,6 +30,8 @@ edges | tst.go:27:30:27:37 | jsonData | tst.go:27:26:27:38 | call to len | provenance | Config | | tst.go:34:2:34:30 | ... = ...[0] | tst.go:35:26:35:33 | jsonData | provenance | | | tst.go:35:26:35:33 | jsonData | tst.go:35:22:35:34 | call to len | provenance | Config | +models +| 1 | Source: io/ioutil; ; false; ReadFile; ; ; ReturnValue[0]; file; manual | nodes | AllocationSizeOverflow.go:6:2:6:33 | ... := ...[0] | semmle.label | ... := ...[0] | | AllocationSizeOverflow.go:10:10:10:22 | call to len | semmle.label | call to len | @@ -49,14 +62,3 @@ nodes | tst.go:35:22:35:34 | call to len | semmle.label | call to len | | tst.go:35:26:35:33 | jsonData | semmle.label | jsonData | subpaths -#select -| AllocationSizeOverflow.go:10:10:10:22 | call to len | AllocationSizeOverflow.go:6:2:6:33 | ... := ...[0] | AllocationSizeOverflow.go:10:10:10:22 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | AllocationSizeOverflow.go:11:25:11:28 | size | allocation | AllocationSizeOverflow.go:6:2:6:33 | ... := ...[0] | potentially large value | -| tst2.go:10:22:10:30 | call to len | tst2.go:9:2:9:37 | ... := ...[0] | tst2.go:10:22:10:30 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst2.go:10:22:10:32 | ...+... | allocation | tst2.go:9:2:9:37 | ... := ...[0] | potentially large value | -| tst2.go:15:22:15:30 | call to len | tst2.go:14:2:14:29 | ... := ...[0] | tst2.go:15:22:15:30 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst2.go:15:22:15:32 | ...+... | allocation | tst2.go:14:2:14:29 | ... := ...[0] | potentially large value | -| tst3.go:7:22:7:34 | call to len | tst3.go:6:2:6:31 | ... := ...[0] | tst3.go:7:22:7:34 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst3.go:7:22:7:36 | ...+... | allocation | tst3.go:6:2:6:31 | ... := ...[0] | potentially large value | -| tst3.go:24:16:24:28 | call to len | tst3.go:6:2:6:31 | ... := ...[0] | tst3.go:24:16:24:28 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst3.go:27:24:27:32 | newlength | allocation | tst3.go:6:2:6:31 | ... := ...[0] | potentially large value | -| tst3.go:32:16:32:28 | call to len | tst3.go:6:2:6:31 | ... := ...[0] | tst3.go:32:16:32:28 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst3.go:36:23:36:31 | newlength | allocation | tst3.go:6:2:6:31 | ... := ...[0] | potentially large value | -| tst.go:15:22:15:34 | call to len | tst.go:14:2:14:30 | ... = ...[0] | tst.go:15:22:15:34 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst.go:15:22:15:36 | ...+... | allocation | tst.go:14:2:14:30 | ... = ...[0] | potentially large value | -| tst.go:21:22:21:34 | call to len | tst.go:20:2:20:31 | ... = ...[0] | tst.go:21:22:21:34 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst.go:21:22:21:36 | ...+... | allocation | tst.go:20:2:20:31 | ... = ...[0] | potentially large value | -| tst.go:27:26:27:38 | call to len | tst.go:26:2:26:31 | ... = ...[0] | tst.go:27:26:27:38 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst.go:27:26:27:40 | ...+... | allocation | tst.go:26:2:26:31 | ... = ...[0] | potentially large value | -| tst.go:35:22:35:34 | call to len | tst.go:34:2:34:30 | ... = ...[0] | tst.go:35:22:35:34 | call to len | This operation, which is used in an $@, involves a $@ and might overflow. | tst.go:35:22:35:36 | ...+... | allocation | tst.go:34:2:34:30 | ... = ...[0] | potentially large value | diff --git a/go/ql/test/query-tests/Security/CWE-190/AllocationSizeOverflow.qlref b/go/ql/test/query-tests/Security/CWE-190/AllocationSizeOverflow.qlref index 3f69c90d756..35320510b62 100644 --- a/go/ql/test/query-tests/Security/CWE-190/AllocationSizeOverflow.qlref +++ b/go/ql/test/query-tests/Security/CWE-190/AllocationSizeOverflow.qlref @@ -1 +1,2 @@ -Security/CWE-190/AllocationSizeOverflow.ql +query: Security/CWE-190/AllocationSizeOverflow.ql +postprocess: TestUtilities/PrettyPrintModels.ql 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/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/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/AutomodelApplicationModeCharacteristics.qll b/java/ql/automodel/src/AutomodelApplicationModeCharacteristics.qll index 13fbbe5d36f..8c8ad1a2df4 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 diff --git a/java/ql/automodel/src/AutomodelFrameworkModeCharacteristics.qll b/java/ql/automodel/src/AutomodelFrameworkModeCharacteristics.qll index 357b3a7573c..8985e6022eb 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 diff --git a/java/ql/automodel/src/CHANGELOG.md b/java/ql/automodel/src/CHANGELOG.md index 7dc759d1ac6..3d5fc1f2229 100644 --- a/java/ql/automodel/src/CHANGELOG.md +++ b/java/ql/automodel/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 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/codeql-pack.release.yml b/java/ql/automodel/src/codeql-pack.release.yml index 42da17b3841..8033d980afa 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.6 diff --git a/java/ql/automodel/src/qlpack.yml b/java/ql/automodel/src/qlpack.yml index fd277afd1d7..5da02bb9e8e 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.7-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..608f229f028 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,3 +1,15 @@ +## 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-08-20-dataflow-dispatch.md b/java/ql/lib/change-notes/2024-08-20-dataflow-dispatch.md new file mode 100644 index 00000000000..b67cea4c8ba --- /dev/null +++ b/java/ql/lib/change-notes/2024-08-20-dataflow-dispatch.md @@ -0,0 +1,4 @@ +--- +category: majorAnalysis +--- +* 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/change-notes/2024-09-03-outdated-deprecations.md b/java/ql/lib/change-notes/2024-09-03-outdated-deprecations.md new file mode 100644 index 00000000000..a1477ef25ce --- /dev/null +++ b/java/ql/lib/change-notes/2024-09-03-outdated-deprecations.md @@ -0,0 +1,11 @@ +--- +category: breaking +--- +* 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. 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/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index 33d3a2cd113..e3b15d965db 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: 3.0.1 diff --git a/java/ql/lib/ext/experimental/org.apache.shiro.authc.model.yml b/java/ql/lib/ext/experimental/org.apache.shiro.authc.model.yml new file mode 100644 index 00000000000..6602a9caf7c --- /dev/null +++ b/java/ql/lib/ext/experimental/org.apache.shiro.authc.model.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/java-all + extensible: sourceModel + data: + - ["org.apache.shiro.authc","AuthenticationToken",true,"getCredentials","()","","ReturnValue","remote","manual"] \ No newline at end of file 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..2d416db7f68 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: 3.0.2-dev groups: java dbscheme: config/semmlecode.dbscheme extractor: java diff --git a/java/ql/lib/semmle/code/java/Element.qll b/java/ql/lib/semmle/code/java/Element.qll index 08689f05f94..aecdd51e144 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() } 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/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/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/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index 464768e3a7f..f40eb15e63e 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 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/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/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index 53ab127707f..35e710ab1bf 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.3 diff --git a/java/ql/src/experimental/Security/CWE/CWE-347/Auth0NoVerifier.qhelp b/java/ql/src/experimental/Security/CWE/CWE-347/Auth0NoVerifier.qhelp new file mode 100644 index 00000000000..b2258c457fe --- /dev/null +++ b/java/ql/src/experimental/Security/CWE/CWE-347/Auth0NoVerifier.qhelp @@ -0,0 +1,31 @@ + + + +

    + A JSON Web Token (JWT) is used for authenticating and managing users in an application. It must be verified in order to ensure the JWT is genuine. +

    + +
    + + +

    + Don't use information from a JWT without verifying that JWT. +

    + +
    + + +

    + The following example illustrates secure and insecure use of the Auth0 `java-jwt` library. +

    + + + +
    + +
  • + The incorrect use of JWT in ShenyuAdminBootstrap allows an attacker to bypass authentication. +
  • +
    + +
    diff --git a/java/ql/src/experimental/Security/CWE/CWE-347/Auth0NoVerifier.ql b/java/ql/src/experimental/Security/CWE/CWE-347/Auth0NoVerifier.ql new file mode 100644 index 00000000000..f5a93b4c6c0 --- /dev/null +++ b/java/ql/src/experimental/Security/CWE/CWE-347/Auth0NoVerifier.ql @@ -0,0 +1,59 @@ +/** + * @name Missing JWT signature check + * @description Failing to check the Json Web Token (JWT) signature may allow an attacker to forge their own tokens. + * @kind path-problem + * @problem.severity error + * @security-severity 7.8 + * @precision high + * @id java/missing-jwt-signature-check-auth0 + * @tags security + * external/cwe/cwe-347 + */ + +import java +import semmle.code.java.dataflow.FlowSources +import JwtAuth0 as JwtAuth0 + +module JwtDecodeConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { + source instanceof RemoteFlowSource and + not FlowToJwtVerify::flow(source, _) + } + + predicate isSink(DataFlow::Node sink) { sink.asExpr() = any(JwtAuth0::GetPayload a) } + + predicate isAdditionalFlowStep(DataFlow::Node nodeFrom, DataFlow::Node nodeTo) { + // Decode Should be one of the middle nodes + exists(JwtAuth0::Decode a | + nodeFrom.asExpr() = a.getArgument(0) and + nodeTo.asExpr() = a + ) + or + exists(JwtAuth0::Verify a | + nodeFrom.asExpr() = a.getArgument(0) and + nodeTo.asExpr() = a + ) + or + exists(JwtAuth0::GetPayload a | + nodeFrom.asExpr() = a.getQualifier() and + nodeTo.asExpr() = a + ) + } +} + +module FlowToJwtVerifyConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource } + + predicate isSink(DataFlow::Node sink) { sink.asExpr() = any(JwtAuth0::Verify a).getArgument(0) } +} + +module JwtDecode = TaintTracking::Global; + +module FlowToJwtVerify = TaintTracking::Global; + +import JwtDecode::PathGraph + +from JwtDecode::PathNode source, JwtDecode::PathNode sink +where JwtDecode::flowPath(source, sink) +select sink.getNode(), source, sink, "This parses a $@, but the signature is not verified.", + source.getNode(), "JWT" diff --git a/java/ql/src/experimental/Security/CWE/CWE-347/Example.java b/java/ql/src/experimental/Security/CWE/CWE-347/Example.java new file mode 100644 index 00000000000..2777d4f2cb8 --- /dev/null +++ b/java/ql/src/experimental/Security/CWE/CWE-347/Example.java @@ -0,0 +1,80 @@ +package com.example.JwtTest; + +import java.io.*; +import java.security.NoSuchAlgorithmException; +import java.util.Objects; +import java.util.Optional; +import javax.crypto.KeyGenerator; +import javax.servlet.http.*; +import javax.servlet.annotation.*; +import com.auth0.jwt.JWT; +import com.auth0.jwt.JWTVerifier; +import com.auth0.jwt.algorithms.Algorithm; +import com.auth0.jwt.exceptions.JWTCreationException; +import com.auth0.jwt.exceptions.JWTVerificationException; +import com.auth0.jwt.interfaces.DecodedJWT; + +@WebServlet(name = "JwtTest1", value = "/Auth") +public class auth0 extends HttpServlet { + + public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { + response.setContentType("text/html"); + PrintWriter out = response.getWriter(); + + // OK: first decode without signature verification + // and then verify with signature verification + String JwtToken1 = request.getParameter("JWT1"); + String userName = decodeToken(JwtToken1); + verifyToken(JwtToken1, "A Securely generated Key"); + if (Objects.equals(userName, "Admin")) { + out.println(""); + out.println("

    " + "heyyy Admin" + "

    "); + out.println(""); + } + + out.println(""); + out.println("

    " + "heyyy Nobody" + "

    "); + out.println(""); + } + + public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { + response.setContentType("text/html"); + PrintWriter out = response.getWriter(); + + // NOT OK: only decode, no verification + String JwtToken2 = request.getParameter("JWT2"); + String userName = decodeToken(JwtToken2); + if (Objects.equals(userName, "Admin")) { + out.println(""); + out.println("

    " + "heyyy Admin" + "

    "); + out.println(""); + } + + // OK: no clue of the use of unsafe decoded JWT return value + JwtToken2 = request.getParameter("JWT2"); + JWT.decode(JwtToken2); + + + out.println(""); + out.println("

    " + "heyyy Nobody" + "

    "); + out.println(""); + } + + public static boolean verifyToken(final String token, final String key) { + try { + JWTVerifier verifier = JWT.require(Algorithm.HMAC256(key)).build(); + verifier.verify(token); + return true; + } catch (JWTVerificationException e) { + System.out.printf("jwt decode fail, token: %s", e); + } + return false; + } + + + public static String decodeToken(final String token) { + DecodedJWT jwt = JWT.decode(token); + return Optional.of(jwt).map(item -> item.getClaim("userName").asString()).orElse(""); + } + +} diff --git a/java/ql/src/experimental/Security/CWE/CWE-347/JwtAuth0.qll b/java/ql/src/experimental/Security/CWE/CWE-347/JwtAuth0.qll new file mode 100644 index 00000000000..323ccbadbf2 --- /dev/null +++ b/java/ql/src/experimental/Security/CWE/CWE-347/JwtAuth0.qll @@ -0,0 +1,43 @@ +import java + +class PayloadType extends RefType { + PayloadType() { this.hasQualifiedName("com.auth0.jwt.interfaces", "Payload") } +} + +class JwtType extends RefType { + JwtType() { this.hasQualifiedName("com.auth0.jwt", "JWT") } +} + +class JwtVerifierType extends RefType { + JwtVerifierType() { this.hasQualifiedName("com.auth0.jwt", "JWTVerifier") } +} + +/** + * A Method that returns a Decoded Claim of JWT + */ +class GetPayload extends MethodCall { + GetPayload() { + this.getCallee().getDeclaringType() instanceof PayloadType and + this.getCallee().hasName(["getClaim", "getIssuedAt"]) + } +} + +/** + * A Method that Decode JWT without signature verification + */ +class Decode extends MethodCall { + Decode() { + this.getCallee().getDeclaringType() instanceof JwtType and + this.getCallee().hasName("decode") + } +} + +/** + * A Method that Decode JWT with signature verification + */ +class Verify extends MethodCall { + Verify() { + this.getCallee().getDeclaringType() instanceof JwtVerifierType and + this.getCallee().hasName("verify") + } +} diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index 32442dbf4d6..19a3ede39d2 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.4-dev groups: - java - queries 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 b8bc01f0800..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) } } @@ -50,7 +68,7 @@ module Printing = ModelPrinting; /** * Holds if `c` is a relevant content kind, where the underlying type is relevant. */ -private predicate isRelevantTypeInContent(DataFlow::Content c) { +private predicate isRelevantTypeInContent(DataFlow::ContentSet c) { isRelevantType(getUnderlyingContentType(c)) } @@ -58,24 +76,23 @@ private predicate isRelevantTypeInContent(DataFlow::Content c) { * Holds if data can flow from `node1` to `node2` either via a read or a write of an intermediate field `f`. */ private predicate isRelevantTaintStep(DataFlow::Node node1, DataFlow::Node node2) { - exists(DataFlow::Content f | + exists(DataFlow::ContentSet f | DataFlowPrivate::readStep(node1, f, node2) and // Partially restrict the content types used for intermediate steps. (not exists(getUnderlyingContentType(f)) or isRelevantTypeInContent(f)) ) or - exists(DataFlow::Content f | DataFlowPrivate::storeStep(node1, f, node2) | - DataFlowPrivate::containerContent(f) - ) + exists(DataFlow::ContentSet f | DataFlowPrivate::storeStep(node1, f, node2) | containerContent(f)) } /** * 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::Content c) { +pragma[nomagic] +private predicate isRelevantContent0(DataFlow::ContentSet c) { isRelevantTypeInContent(c) or - DataFlowPrivate::containerContent(c) + containerContent(c) } /** @@ -87,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,9 +197,9 @@ module PropagateFlowConfig implements DataFlow::StateConfigSig { predicate isAdditionalFlowStep( DataFlow::Node node1, FlowState state1, DataFlow::Node node2, FlowState state2 ) { - exists(DataFlow::Content c | - DataFlowImplCommon::store(node1, c, node2, _, _) and - isRelevantContent(c) and + exists(DataFlow::ContentSet c | + DataFlowImplCommon::store(node1, c.getAStoreContent(), node2, _, _) and + isRelevantContent0(c) and ( state1 instanceof TaintRead and state2.(TaintStore).getStep() = 1 or @@ -180,9 +207,9 @@ module PropagateFlowConfig implements DataFlow::StateConfigSig { ) ) or - exists(DataFlow::Content c | + exists(DataFlow::ContentSet c | DataFlowPrivate::readStep(node1, c, node2) and - isRelevantContent(c) and + isRelevantContent0(c) and state1.(TaintRead).getStep() + 1 = state2.(TaintRead).getStep() ) } @@ -196,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) ) } @@ -254,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 eb37aa93dbe..2be162d5f9b 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%") @@ -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`. */ @@ -303,3 +326,36 @@ predicate isRelevantSinkKind(string kind) { */ 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-kotlin1/library-tests/dataflow/summaries/test.expected b/java/ql/test-kotlin1/library-tests/dataflow/summaries/test.expected index 7f55b285880..84fdf028642 100644 --- a/java/ql/test-kotlin1/library-tests/dataflow/summaries/test.expected +++ b/java/ql/test-kotlin1/library-tests/dataflow/summaries/test.expected @@ -36,19 +36,14 @@ edges | apply.kt:6:28:6:41 | $this$apply : String | apply.kt:6:35:6:38 | this | provenance | | | apply.kt:7:14:7:25 | taint(...) : String | apply.kt:7:14:7:40 | apply(...) | provenance | MaD:31 | | list.kt:6:9:6:9 | l [post update] : List [] : String | list.kt:7:14:7:14 | l | provenance | | -| list.kt:6:9:6:9 | l [post update] : List [] : String | list.kt:8:14:8:14 | l : List | provenance | | | list.kt:6:9:6:9 | l [post update] : List [] : String | list.kt:8:14:8:14 | l : List [] : String | provenance | | | list.kt:6:9:6:9 | l [post update] : List [] : String | list.kt:9:19:9:19 | l : List [] : String | provenance | | -| list.kt:6:9:6:9 | l [post update] : List [] : String | list.kt:10:18:10:18 | s | provenance | | | list.kt:6:16:6:25 | taint(...) : String | list.kt:6:9:6:9 | l [post update] : List [] : String | provenance | MaD:27 | -| list.kt:8:14:8:14 | l : List | list.kt:8:14:8:17 | get(...) | provenance | MaD:26 | | list.kt:8:14:8:14 | l : List [] : String | list.kt:8:14:8:17 | get(...) | provenance | MaD:26 | | list.kt:9:19:9:19 | l : List [] : String | list.kt:10:18:10:18 | s | provenance | | | list.kt:13:17:13:40 | {...} : String[] [[]] : String | list.kt:14:14:14:14 | a | provenance | | | list.kt:13:17:13:40 | {...} : String[] [[]] : String | list.kt:15:14:15:14 | a : String[] [[]] : String | provenance | | -| list.kt:13:17:13:40 | {...} : String[] [[]] : String | list.kt:15:14:15:17 | ...[...] | provenance | | | list.kt:13:17:13:40 | {...} : String[] [[]] : String | list.kt:16:19:16:19 | a : String[] [[]] : String | provenance | | -| list.kt:13:17:13:40 | {...} : String[] [[]] : String | list.kt:17:18:17:18 | s | provenance | | | list.kt:13:25:13:34 | taint(...) : String | list.kt:13:17:13:40 | {...} : String[] [[]] : String | provenance | | | list.kt:15:14:15:14 | a : String[] [[]] : String | list.kt:15:14:15:17 | ...[...] | provenance | | | list.kt:16:19:16:19 | a : String[] [[]] : String | list.kt:17:18:17:18 | s | provenance | | @@ -134,7 +129,6 @@ nodes | list.kt:6:9:6:9 | l [post update] : List [] : String | semmle.label | l [post update] : List [] : String | | list.kt:6:16:6:25 | taint(...) : String | semmle.label | taint(...) : String | | list.kt:7:14:7:14 | l | semmle.label | l | -| list.kt:8:14:8:14 | l : List | semmle.label | l : List | | list.kt:8:14:8:14 | l : List [] : String | semmle.label | l : List [] : String | | list.kt:8:14:8:17 | get(...) | semmle.label | get(...) | | list.kt:9:19:9:19 | l : List [] : String | semmle.label | l : List [] : String | diff --git a/java/ql/test-kotlin2/library-tests/dataflow/summaries/test.expected b/java/ql/test-kotlin2/library-tests/dataflow/summaries/test.expected index 7f55b285880..84fdf028642 100644 --- a/java/ql/test-kotlin2/library-tests/dataflow/summaries/test.expected +++ b/java/ql/test-kotlin2/library-tests/dataflow/summaries/test.expected @@ -36,19 +36,14 @@ edges | apply.kt:6:28:6:41 | $this$apply : String | apply.kt:6:35:6:38 | this | provenance | | | apply.kt:7:14:7:25 | taint(...) : String | apply.kt:7:14:7:40 | apply(...) | provenance | MaD:31 | | list.kt:6:9:6:9 | l [post update] : List [] : String | list.kt:7:14:7:14 | l | provenance | | -| list.kt:6:9:6:9 | l [post update] : List [] : String | list.kt:8:14:8:14 | l : List | provenance | | | list.kt:6:9:6:9 | l [post update] : List [] : String | list.kt:8:14:8:14 | l : List [] : String | provenance | | | list.kt:6:9:6:9 | l [post update] : List [] : String | list.kt:9:19:9:19 | l : List [] : String | provenance | | -| list.kt:6:9:6:9 | l [post update] : List [] : String | list.kt:10:18:10:18 | s | provenance | | | list.kt:6:16:6:25 | taint(...) : String | list.kt:6:9:6:9 | l [post update] : List [] : String | provenance | MaD:27 | -| list.kt:8:14:8:14 | l : List | list.kt:8:14:8:17 | get(...) | provenance | MaD:26 | | list.kt:8:14:8:14 | l : List [] : String | list.kt:8:14:8:17 | get(...) | provenance | MaD:26 | | list.kt:9:19:9:19 | l : List [] : String | list.kt:10:18:10:18 | s | provenance | | | list.kt:13:17:13:40 | {...} : String[] [[]] : String | list.kt:14:14:14:14 | a | provenance | | | list.kt:13:17:13:40 | {...} : String[] [[]] : String | list.kt:15:14:15:14 | a : String[] [[]] : String | provenance | | -| list.kt:13:17:13:40 | {...} : String[] [[]] : String | list.kt:15:14:15:17 | ...[...] | provenance | | | list.kt:13:17:13:40 | {...} : String[] [[]] : String | list.kt:16:19:16:19 | a : String[] [[]] : String | provenance | | -| list.kt:13:17:13:40 | {...} : String[] [[]] : String | list.kt:17:18:17:18 | s | provenance | | | list.kt:13:25:13:34 | taint(...) : String | list.kt:13:17:13:40 | {...} : String[] [[]] : String | provenance | | | list.kt:15:14:15:14 | a : String[] [[]] : String | list.kt:15:14:15:17 | ...[...] | provenance | | | list.kt:16:19:16:19 | a : String[] [[]] : String | list.kt:17:18:17:18 | s | provenance | | @@ -134,7 +129,6 @@ nodes | list.kt:6:9:6:9 | l [post update] : List [] : String | semmle.label | l [post update] : List [] : String | | list.kt:6:16:6:25 | taint(...) : String | semmle.label | taint(...) : String | | list.kt:7:14:7:14 | l | semmle.label | l | -| list.kt:8:14:8:14 | l : List | semmle.label | l : List | | list.kt:8:14:8:14 | l : List [] : String | semmle.label | l : List [] : String | | list.kt:8:14:8:17 | get(...) | semmle.label | get(...) | | list.kt:9:19:9:19 | l : List [] : String | semmle.label | l : List [] : String | diff --git a/java/ql/test/experimental/query-tests/security/CWE-200/SensitiveAndroidFileLeak.expected b/java/ql/test/experimental/query-tests/security/CWE-200/SensitiveAndroidFileLeak.expected index f232f30d6b1..4282361f89e 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-200/SensitiveAndroidFileLeak.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-200/SensitiveAndroidFileLeak.expected @@ -6,8 +6,7 @@ edges | FileService.java:20:31:20:43 | intent : Intent | FileService.java:21:28:21:33 | intent : Intent | provenance | | | FileService.java:21:28:21:33 | intent : Intent | FileService.java:21:28:21:64 | getStringExtra(...) : String | provenance | MaD:2 | | FileService.java:21:28:21:64 | getStringExtra(...) : String | FileService.java:25:42:25:50 | localPath : String | provenance | | -| FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] | FileService.java:40:41:40:55 | params : Object[] | provenance | Config | -| FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] [[]] : String | FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] | provenance | | +| FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] [[]] : String | FileService.java:40:41:40:55 | params : Object[] | provenance | Config | | FileService.java:25:42:25:50 | localPath : String | FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] [[]] : String | provenance | | | FileService.java:25:42:25:50 | localPath : String | FileService.java:32:13:32:28 | sourceUri : String | provenance | | | FileService.java:32:13:32:28 | sourceUri : String | FileService.java:35:17:35:25 | sourceUri : String | provenance | | @@ -33,7 +32,6 @@ nodes | FileService.java:20:31:20:43 | intent : Intent | semmle.label | intent : Intent | | FileService.java:21:28:21:33 | intent : Intent | semmle.label | intent : Intent | | FileService.java:21:28:21:64 | getStringExtra(...) : String | semmle.label | getStringExtra(...) : String | -| FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] | semmle.label | makeParamsToExecute(...) : Object[] | | FileService.java:25:13:25:51 | makeParamsToExecute(...) : Object[] [[]] : String | semmle.label | makeParamsToExecute(...) : Object[] [[]] : String | | FileService.java:25:42:25:50 | localPath : String | semmle.label | localPath : String | | FileService.java:32:13:32:28 | sourceUri : String | semmle.label | sourceUri : String | diff --git a/java/ql/test/experimental/query-tests/security/CWE-347/Auth0NoVerifier.expected b/java/ql/test/experimental/query-tests/security/CWE-347/Auth0NoVerifier.expected new file mode 100644 index 00000000000..3d91060cc31 --- /dev/null +++ b/java/ql/test/experimental/query-tests/security/CWE-347/Auth0NoVerifier.expected @@ -0,0 +1,36 @@ +#select +| JwtNoVerifier.java:91:45:91:69 | getClaim(...) | JwtNoVerifier.java:44:28:44:55 | getParameter(...) : String | JwtNoVerifier.java:91:45:91:69 | getClaim(...) | This parses a $@, but the signature is not verified. | JwtNoVerifier.java:44:28:44:55 | getParameter(...) | JWT | +| JwtNoVerifier.java:91:45:91:69 | getClaim(...) | JwtNoVerifier.java:58:37:58:62 | getCredentials(...) : Object | JwtNoVerifier.java:91:45:91:69 | getClaim(...) | This parses a $@, but the signature is not verified. | JwtNoVerifier.java:58:37:58:62 | getCredentials(...) | JWT | +edges +| JwtNoVerifier.java:44:28:44:55 | getParameter(...) : String | JwtNoVerifier.java:45:39:45:47 | JwtToken1 : String | provenance | Src:MaD:4 | +| JwtNoVerifier.java:45:39:45:47 | JwtToken1 : String | JwtNoVerifier.java:89:38:89:55 | token : String | provenance | | +| JwtNoVerifier.java:58:28:58:62 | (...)... : String | JwtNoVerifier.java:59:32:59:40 | JwtToken3 : String | provenance | | +| JwtNoVerifier.java:58:37:58:62 | getCredentials(...) : Object | JwtNoVerifier.java:58:28:58:62 | (...)... : String | provenance | Src:MaD:1 | +| JwtNoVerifier.java:59:32:59:40 | JwtToken3 : String | JwtNoVerifier.java:89:38:89:55 | token : String | provenance | | +| JwtNoVerifier.java:89:38:89:55 | token : String | JwtNoVerifier.java:90:37:90:41 | token : String | provenance | | +| JwtNoVerifier.java:90:26:90:42 | decode(...) : DecodedJWT | JwtNoVerifier.java:91:28:91:30 | jwt : DecodedJWT | provenance | | +| JwtNoVerifier.java:90:37:90:41 | token : String | JwtNoVerifier.java:90:26:90:42 | decode(...) : DecodedJWT | provenance | Config | +| JwtNoVerifier.java:91:16:91:31 | of(...) : Optional [] : DecodedJWT | JwtNoVerifier.java:91:37:91:40 | item : DecodedJWT | provenance | MaD:2 | +| JwtNoVerifier.java:91:28:91:30 | jwt : DecodedJWT | JwtNoVerifier.java:91:16:91:31 | of(...) : Optional [] : DecodedJWT | provenance | MaD:3 | +| JwtNoVerifier.java:91:37:91:40 | item : DecodedJWT | JwtNoVerifier.java:91:45:91:48 | item : DecodedJWT | provenance | | +| JwtNoVerifier.java:91:45:91:48 | item : DecodedJWT | JwtNoVerifier.java:91:45:91:69 | getClaim(...) | provenance | Config | +models +| 1 | Source: org.apache.shiro.authc; AuthenticationToken; true; getCredentials; (); ; ReturnValue; remote; manual | +| 2 | Summary: java.util; Optional; false; map; ; ; Argument[this].Element; Argument[0].Parameter[0]; value; manual | +| 3 | Summary: java.util; Optional; false; of; ; ; Argument[0]; ReturnValue.Element; value; manual | +| 4 | Source: javax.servlet; ServletRequest; false; getParameter; (String); ; ReturnValue; remote; manual | +nodes +| JwtNoVerifier.java:44:28:44:55 | getParameter(...) : String | semmle.label | getParameter(...) : String | +| JwtNoVerifier.java:45:39:45:47 | JwtToken1 : String | semmle.label | JwtToken1 : String | +| JwtNoVerifier.java:58:28:58:62 | (...)... : String | semmle.label | (...)... : String | +| JwtNoVerifier.java:58:37:58:62 | getCredentials(...) : Object | semmle.label | getCredentials(...) : Object | +| JwtNoVerifier.java:59:32:59:40 | JwtToken3 : String | semmle.label | JwtToken3 : String | +| JwtNoVerifier.java:89:38:89:55 | token : String | semmle.label | token : String | +| JwtNoVerifier.java:90:26:90:42 | decode(...) : DecodedJWT | semmle.label | decode(...) : DecodedJWT | +| JwtNoVerifier.java:90:37:90:41 | token : String | semmle.label | token : String | +| JwtNoVerifier.java:91:16:91:31 | of(...) : Optional [] : DecodedJWT | semmle.label | of(...) : Optional [] : DecodedJWT | +| JwtNoVerifier.java:91:28:91:30 | jwt : DecodedJWT | semmle.label | jwt : DecodedJWT | +| JwtNoVerifier.java:91:37:91:40 | item : DecodedJWT | semmle.label | item : DecodedJWT | +| JwtNoVerifier.java:91:45:91:48 | item : DecodedJWT | semmle.label | item : DecodedJWT | +| JwtNoVerifier.java:91:45:91:69 | getClaim(...) | semmle.label | getClaim(...) | +subpaths diff --git a/java/ql/test/experimental/query-tests/security/CWE-347/Auth0NoVerifier.qlref b/java/ql/test/experimental/query-tests/security/CWE-347/Auth0NoVerifier.qlref new file mode 100644 index 00000000000..14b020f24cd --- /dev/null +++ b/java/ql/test/experimental/query-tests/security/CWE-347/Auth0NoVerifier.qlref @@ -0,0 +1,2 @@ +query: experimental/Security/CWE/CWE-347/Auth0NoVerifier.ql +postprocess: TestUtilities/PrettyPrintModels.ql \ No newline at end of file diff --git a/java/ql/test/experimental/query-tests/security/CWE-347/JwtNoVerifier.java b/java/ql/test/experimental/query-tests/security/CWE-347/JwtNoVerifier.java new file mode 100644 index 00000000000..15a31bcc476 --- /dev/null +++ b/java/ql/test/experimental/query-tests/security/CWE-347/JwtNoVerifier.java @@ -0,0 +1,137 @@ +import java.io.*; +import java.security.NoSuchAlgorithmException; +import java.util.Objects; +import java.util.Optional; +import javax.crypto.KeyGenerator; +import javax.servlet.http.*; +import javax.servlet.annotation.*; + +import com.auth0.jwt.JWT; +import com.auth0.jwt.JWTVerifier; +import com.auth0.jwt.algorithms.Algorithm; +import com.auth0.jwt.exceptions.JWTVerificationException; +import com.auth0.jwt.interfaces.DecodedJWT; +import org.apache.shiro.authc.AuthenticationToken; +import org.apache.shiro.authc.BearerToken; + +public class JwtNoVerifier extends HttpServlet { + + public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { + response.setContentType("text/html"); + PrintWriter out = response.getWriter(); + + // OK: first decode without signature verification + // and then verify with signature verification + String JwtToken1 = request.getParameter("JWT1"); + String userName = decodeToken(JwtToken1); + verifyToken(JwtToken1, "A Securely generated Key"); + if (Objects.equals(userName, "Admin")) { + out.println(""); + out.println("

    " + "heyyy Admin" + "

    "); + out.println(""); + } + + out.println(""); + out.println("

    " + "heyyy Nobody" + "

    "); + out.println(""); + } + + public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { + response.setContentType("text/html"); + PrintWriter out = response.getWriter(); + + // NOT OK: only decode, no verification + String JwtToken1 = request.getParameter("JWT2"); + String userName = decodeToken(JwtToken1); + if (Objects.equals(userName, "Admin")) { + out.println(""); + out.println("

    " + "heyyy Admin" + "

    "); + out.println(""); + } + + AuthenticationToken authToken = new BearerToken("admin", "admin"); + // OK: no clue of the use of unsafe decoded JWT return value + String JwtToken2 = request.getParameter("JWT2"); + JWT.decode(JwtToken2); + + // NOT OK: only decode, no verification + String JwtToken3 = (String) authToken.getCredentials(); + userName = decodeToken(JwtToken3); + if (Objects.equals(userName, "Admin")) { + out.println(""); + out.println("

    " + "heyyy Admin" + "

    "); + out.println(""); + } + + // OK: no clue of the use of unsafe decoded JWT return value + String JwtToken4 = (String) authToken.getCredentials(); + JWT.decode(JwtToken4); + + + + out.println(""); + out.println("

    " + "heyyy Nobody" + "

    "); + out.println(""); + } + + public static boolean verifyToken(final String token, final String key) { + try { + JWTVerifier verifier = JWT.require(Algorithm.HMAC256(key)).build(); + verifier.verify(token); + return true; + } catch (JWTVerificationException e) { + System.out.printf("jwt decode fail, token: %s", e); + } + return false; + } + + + public static String decodeToken(final String token) { + DecodedJWT jwt = JWT.decode(token); + return Optional.of(jwt).map(item -> item.getClaim("userName").asString()).orElse(""); + } + + + private static String getSecureRandomKey() throws NoSuchAlgorithmException { + KeyGenerator keyGen = KeyGenerator.getInstance("AES"); + keyGen.init(256); // for example + return keyGen.generateKey().toString(); + } + + static final String JWT_KEY = "KEY"; + + public static void NoNeedForTest(HttpServletRequest request) { + // constant key + String JwtToken3 = request.getParameter("JWT3"); + verifyToken(JwtToken3, JWT_KEY); + + // none algorithm + String JwtToken4 = request.getParameter("JWT4"); + try { + verifyTokenNoneAlg(JwtToken4, getSecureRandomKey()); + } catch (NoSuchAlgorithmException e) { + throw new RuntimeException(e); + } + + } + + public static String generateToken(final String userName, final String key) { + try { + return JWT.create().withClaim("userName", userName).sign(Algorithm.HMAC256(key)); + } catch (IllegalArgumentException e) { + System.out.printf("JWTToken generate fail %s", e); + } + return ""; + } + + public static boolean verifyTokenNoneAlg(final String token, final String key) { + try { + JWTVerifier verifier = JWT.require(Algorithm.none()).build(); + verifier.verify(token); + return true; + } catch (JWTVerificationException e) { + System.out.printf("jwt decode fail, token: %s", e); + } + return false; + } +} diff --git a/java/ql/test/experimental/query-tests/security/CWE-347/options b/java/ql/test/experimental/query-tests/security/CWE-347/options new file mode 100644 index 00000000000..6a99adc587e --- /dev/null +++ b/java/ql/test/experimental/query-tests/security/CWE-347/options @@ -0,0 +1 @@ +//semmle-extractor-options: --javac-args -cp ${testdir}/../../../stubs/auth0-java-jwt-4.4.0:${testdir}/../../../../stubs/javax-servlet-2.5:${testdir}/../../../stubs/org-apache-shiro-authc-2.0.1 diff --git a/java/ql/test/experimental/query-tests/security/CWE-625/PermissiveDotRegex.expected b/java/ql/test/experimental/query-tests/security/CWE-625/PermissiveDotRegex.expected index 7832305e0ac..424cbc58af8 100644 --- a/java/ql/test/experimental/query-tests/security/CWE-625/PermissiveDotRegex.expected +++ b/java/ql/test/experimental/query-tests/security/CWE-625/PermissiveDotRegex.expected @@ -32,7 +32,6 @@ edges | DotRegexSpring.java:71:11:71:42 | decode(...) : String | DotRegexSpring.java:71:29:71:32 | path : String | provenance | | | DotRegexSpring.java:71:11:71:42 | decode(...) : String | DotRegexSpring.java:73:10:73:13 | path : String | provenance | | | DotRegexSpring.java:71:29:71:32 | path : String | DotRegexSpring.java:71:11:71:42 | decode(...) : String | provenance | MaD:3 | -| DotRegexSpring.java:71:29:71:32 | path : String | DotRegexSpring.java:71:11:71:42 | decode(...) : String | provenance | MaD:3 | models | 1 | Source: javax.servlet.http; HttpServletRequest; false; getPathInfo; (); ; ReturnValue; uri-path; manual | | 2 | Source: javax.servlet.http; HttpServletRequest; false; getRequestURI; (); ; ReturnValue; uri-path; manual | @@ -61,11 +60,7 @@ nodes | DotRegexSpring.java:69:28:69:38 | path : String | semmle.label | path : String | | DotRegexSpring.java:71:11:71:42 | decode(...) : String | semmle.label | decode(...) : String | | DotRegexSpring.java:71:29:71:32 | path : String | semmle.label | path : String | -| DotRegexSpring.java:71:29:71:32 | path : String | semmle.label | path : String | -| DotRegexSpring.java:73:10:73:13 | path : String | semmle.label | path : String | | DotRegexSpring.java:73:10:73:13 | path : String | semmle.label | path : String | subpaths | DotRegexSpring.java:22:21:22:24 | path : String | DotRegexSpring.java:69:28:69:38 | path : String | DotRegexSpring.java:73:10:73:13 | path : String | DotRegexSpring.java:22:10:22:25 | decodePath(...) : String | -| DotRegexSpring.java:22:21:22:24 | path : String | DotRegexSpring.java:69:28:69:38 | path : String | DotRegexSpring.java:73:10:73:13 | path : String | DotRegexSpring.java:22:10:22:25 | decodePath(...) : String | -| DotRegexSpring.java:39:21:39:24 | path : String | DotRegexSpring.java:69:28:69:38 | path : String | DotRegexSpring.java:73:10:73:13 | path : String | DotRegexSpring.java:39:10:39:25 | decodePath(...) : String | | DotRegexSpring.java:39:21:39:24 | path : String | DotRegexSpring.java:69:28:69:38 | path : String | DotRegexSpring.java:73:10:73:13 | path : String | DotRegexSpring.java:39:10:39:25 | decodePath(...) : String | diff --git a/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/JWT.java b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/JWT.java new file mode 100644 index 00000000000..f7fe489e30d --- /dev/null +++ b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/JWT.java @@ -0,0 +1,17 @@ +// Generated automatically from com.auth0.jwt.JWT for testing purposes + +package com.auth0.jwt; + +import com.auth0.jwt.JWTCreator; +import com.auth0.jwt.algorithms.Algorithm; +import com.auth0.jwt.interfaces.DecodedJWT; +import com.auth0.jwt.interfaces.Verification; + +public class JWT +{ + public DecodedJWT decodeJwt(String p0){ return null; } + public JWT(){} + public static DecodedJWT decode(String p0){ return null; } + public static JWTCreator.Builder create(){ return null; } + public static Verification require(Algorithm p0){ return null; } +} diff --git a/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/JWTCreator.java b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/JWTCreator.java new file mode 100644 index 00000000000..05455b8ed99 --- /dev/null +++ b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/JWTCreator.java @@ -0,0 +1,46 @@ +// Generated automatically from com.auth0.jwt.JWTCreator for testing purposes + +package com.auth0.jwt; + +import com.auth0.jwt.algorithms.Algorithm; +import java.time.Instant; +import java.util.Date; +import java.util.List; +import java.util.Map; + +public class JWTCreator +{ + protected JWTCreator() {} + static public class Builder + { + public JWTCreator.Builder withArrayClaim(String p0, Integer[] p1){ return null; } + public JWTCreator.Builder withArrayClaim(String p0, Long[] p1){ return null; } + public JWTCreator.Builder withArrayClaim(String p0, String[] p1){ return null; } + public JWTCreator.Builder withAudience(String... p0){ return null; } + public JWTCreator.Builder withClaim(String p0, Boolean p1){ return null; } + public JWTCreator.Builder withClaim(String p0, Date p1){ return null; } + public JWTCreator.Builder withClaim(String p0, Double p1){ return null; } + public JWTCreator.Builder withClaim(String p0, Instant p1){ return null; } + public JWTCreator.Builder withClaim(String p0, Integer p1){ return null; } + public JWTCreator.Builder withClaim(String p0, List p1){ return null; } + public JWTCreator.Builder withClaim(String p0, Long p1){ return null; } + public JWTCreator.Builder withClaim(String p0, Map p1){ return null; } + public JWTCreator.Builder withClaim(String p0, String p1){ return null; } + public JWTCreator.Builder withExpiresAt(Date p0){ return null; } + public JWTCreator.Builder withExpiresAt(Instant p0){ return null; } + public JWTCreator.Builder withHeader(Map p0){ return null; } + public JWTCreator.Builder withHeader(String p0){ return null; } + public JWTCreator.Builder withIssuedAt(Date p0){ return null; } + public JWTCreator.Builder withIssuedAt(Instant p0){ return null; } + public JWTCreator.Builder withIssuer(String p0){ return null; } + public JWTCreator.Builder withJWTId(String p0){ return null; } + public JWTCreator.Builder withKeyId(String p0){ return null; } + public JWTCreator.Builder withNotBefore(Date p0){ return null; } + public JWTCreator.Builder withNotBefore(Instant p0){ return null; } + public JWTCreator.Builder withNullClaim(String p0){ return null; } + public JWTCreator.Builder withPayload(Map p0){ return null; } + public JWTCreator.Builder withPayload(String p0){ return null; } + public JWTCreator.Builder withSubject(String p0){ return null; } + public String sign(Algorithm p0){ return null; } + } +} diff --git a/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/JWTVerifier.java b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/JWTVerifier.java new file mode 100644 index 00000000000..3a44b2480cb --- /dev/null +++ b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/JWTVerifier.java @@ -0,0 +1,12 @@ +// Generated automatically from com.auth0.jwt.JWTVerifier for testing purposes + +package com.auth0.jwt; + +import com.auth0.jwt.interfaces.DecodedJWT; + +public class JWTVerifier implements com.auth0.jwt.interfaces.JWTVerifier +{ + protected JWTVerifier() {} + public DecodedJWT verify(DecodedJWT p0){ return null; } + public DecodedJWT verify(String p0){ return null; } +} diff --git a/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/algorithms/Algorithm.java b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/algorithms/Algorithm.java new file mode 100644 index 00000000000..6d6d06a22f0 --- /dev/null +++ b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/algorithms/Algorithm.java @@ -0,0 +1,50 @@ +// Generated automatically from com.auth0.jwt.algorithms.Algorithm for testing purposes + +package com.auth0.jwt.algorithms; + +import com.auth0.jwt.interfaces.DecodedJWT; +import com.auth0.jwt.interfaces.ECDSAKeyProvider; +import com.auth0.jwt.interfaces.RSAKeyProvider; +import java.security.interfaces.ECKey; +import java.security.interfaces.ECPrivateKey; +import java.security.interfaces.ECPublicKey; +import java.security.interfaces.RSAKey; +import java.security.interfaces.RSAPrivateKey; +import java.security.interfaces.RSAPublicKey; + +abstract public class Algorithm +{ + protected Algorithm() {} + protected Algorithm(String p0, String p1){} + public String getName(){ return null; } + public String getSigningKeyId(){ return null; } + public String toString(){ return null; } + public abstract byte[] sign(byte[] p0); + public abstract void verify(DecodedJWT p0); + public byte[] sign(byte[] p0, byte[] p1){ return null; } + public static Algorithm ECDSA256(ECDSAKeyProvider p0){ return null; } + public static Algorithm ECDSA256(ECKey p0){ return null; } + public static Algorithm ECDSA256(ECPublicKey p0, ECPrivateKey p1){ return null; } + public static Algorithm ECDSA384(ECDSAKeyProvider p0){ return null; } + public static Algorithm ECDSA384(ECKey p0){ return null; } + public static Algorithm ECDSA384(ECPublicKey p0, ECPrivateKey p1){ return null; } + public static Algorithm ECDSA512(ECDSAKeyProvider p0){ return null; } + public static Algorithm ECDSA512(ECKey p0){ return null; } + public static Algorithm ECDSA512(ECPublicKey p0, ECPrivateKey p1){ return null; } + public static Algorithm HMAC256(String p0){ return null; } + public static Algorithm HMAC256(byte[] p0){ return null; } + public static Algorithm HMAC384(String p0){ return null; } + public static Algorithm HMAC384(byte[] p0){ return null; } + public static Algorithm HMAC512(String p0){ return null; } + public static Algorithm HMAC512(byte[] p0){ return null; } + public static Algorithm RSA256(RSAKey p0){ return null; } + public static Algorithm RSA256(RSAKeyProvider p0){ return null; } + public static Algorithm RSA256(RSAPublicKey p0, RSAPrivateKey p1){ return null; } + public static Algorithm RSA384(RSAKey p0){ return null; } + public static Algorithm RSA384(RSAKeyProvider p0){ return null; } + public static Algorithm RSA384(RSAPublicKey p0, RSAPrivateKey p1){ return null; } + public static Algorithm RSA512(RSAKey p0){ return null; } + public static Algorithm RSA512(RSAKeyProvider p0){ return null; } + public static Algorithm RSA512(RSAPublicKey p0, RSAPrivateKey p1){ return null; } + public static Algorithm none(){ return null; } +} diff --git a/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/exceptions/JWTCreationException.java b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/exceptions/JWTCreationException.java new file mode 100644 index 00000000000..19ca564160a --- /dev/null +++ b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/exceptions/JWTCreationException.java @@ -0,0 +1,15 @@ +// Generated automatically from com.auth0.jwt.exceptions.JWTVerificationException for testing purposes + +package com.auth0.jwt.exceptions; + + +public class JWTCreationException extends RuntimeException { + protected JWTCreationException() { + } + + public JWTCreationException(String p0) { + } + + public JWTCreationException(String p0, Throwable p1) { + } +} diff --git a/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/exceptions/JWTVerificationException.java b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/exceptions/JWTVerificationException.java new file mode 100644 index 00000000000..bf322f82d0d --- /dev/null +++ b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/exceptions/JWTVerificationException.java @@ -0,0 +1,11 @@ +// Generated automatically from com.auth0.jwt.exceptions.JWTVerificationException for testing purposes + +package com.auth0.jwt.exceptions; + + +public class JWTVerificationException extends RuntimeException +{ + protected JWTVerificationException() {} + public JWTVerificationException(String p0){} + public JWTVerificationException(String p0, Throwable p1){} +} diff --git a/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/interfaces/Claim.java b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/interfaces/Claim.java new file mode 100644 index 00000000000..05c127cbd57 --- /dev/null +++ b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/interfaces/Claim.java @@ -0,0 +1,25 @@ +// Generated automatically from com.auth0.jwt.interfaces.Claim for testing purposes + +package com.auth0.jwt.interfaces; + +import java.time.Instant; +import java.util.Date; +import java.util.List; +import java.util.Map; + +public interface Claim +{ + T as(java.lang.Class p0); + T[] asArray(java.lang.Class p0); + java.util.List asList(java.lang.Class p0); + Boolean asBoolean(); + Date asDate(); + Double asDouble(); + Integer asInt(); + Long asLong(); + Map asMap(); + String asString(); + boolean isMissing(); + boolean isNull(); + default Instant asInstant(){ return null; } +} diff --git a/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/interfaces/DecodedJWT.java b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/interfaces/DecodedJWT.java new file mode 100644 index 00000000000..c7d202eb793 --- /dev/null +++ b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/interfaces/DecodedJWT.java @@ -0,0 +1,14 @@ +// Generated automatically from com.auth0.jwt.interfaces.DecodedJWT for testing purposes + +package com.auth0.jwt.interfaces; + +import com.auth0.jwt.interfaces.Header; +import com.auth0.jwt.interfaces.Payload; + +public interface DecodedJWT extends Header, Payload +{ + String getHeader(); + String getPayload(); + String getSignature(); + String getToken(); +} diff --git a/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/interfaces/ECDSAKeyProvider.java b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/interfaces/ECDSAKeyProvider.java new file mode 100644 index 00000000000..535ab2dde39 --- /dev/null +++ b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/interfaces/ECDSAKeyProvider.java @@ -0,0 +1,13 @@ +// Generated automatically from com.auth0.jwt.interfaces.ECDSAKeyProvider for testing purposes + +package com.auth0.jwt.interfaces; + +import com.auth0.jwt.interfaces.KeyProvider; +import java.security.PrivateKey; +import java.security.PublicKey; +import java.security.interfaces.ECPrivateKey; +import java.security.interfaces.ECPublicKey; + +public interface ECDSAKeyProvider extends KeyProvider +{ +} diff --git a/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/interfaces/Header.java b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/interfaces/Header.java new file mode 100644 index 00000000000..85e3ff9ef4b --- /dev/null +++ b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/interfaces/Header.java @@ -0,0 +1,14 @@ +// Generated automatically from com.auth0.jwt.interfaces.Header for testing purposes + +package com.auth0.jwt.interfaces; + +import com.auth0.jwt.interfaces.Claim; + +public interface Header +{ + Claim getHeaderClaim(String p0); + String getAlgorithm(); + String getContentType(); + String getKeyId(); + String getType(); +} diff --git a/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/interfaces/JWTVerifier.java b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/interfaces/JWTVerifier.java new file mode 100644 index 00000000000..12fafc93221 --- /dev/null +++ b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/interfaces/JWTVerifier.java @@ -0,0 +1,11 @@ +// Generated automatically from com.auth0.jwt.interfaces.JWTVerifier for testing purposes + +package com.auth0.jwt.interfaces; + +import com.auth0.jwt.interfaces.DecodedJWT; + +public interface JWTVerifier +{ + DecodedJWT verify(DecodedJWT p0); + DecodedJWT verify(String p0); +} diff --git a/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/interfaces/KeyProvider.java b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/interfaces/KeyProvider.java new file mode 100644 index 00000000000..e3c5e8f2c35 --- /dev/null +++ b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/interfaces/KeyProvider.java @@ -0,0 +1,13 @@ +// Generated automatically from com.auth0.jwt.interfaces.KeyProvider for testing purposes + +package com.auth0.jwt.interfaces; + +import java.security.PrivateKey; +import java.security.PublicKey; + +interface KeyProvider +{ + R getPrivateKey(); + String getPrivateKeyId(); + U getPublicKeyById(String p0); +} diff --git a/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/interfaces/Payload.java b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/interfaces/Payload.java new file mode 100644 index 00000000000..98efdf915f6 --- /dev/null +++ b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/interfaces/Payload.java @@ -0,0 +1,25 @@ +// Generated automatically from com.auth0.jwt.interfaces.Payload for testing purposes + +package com.auth0.jwt.interfaces; + +import com.auth0.jwt.interfaces.Claim; +import java.time.Instant; +import java.util.Date; +import java.util.List; +import java.util.Map; + +public interface Payload +{ + Claim getClaim(String p0); + Date getExpiresAt(); + Date getIssuedAt(); + Date getNotBefore(); + List getAudience(); + Map getClaims(); + String getId(); + String getIssuer(); + String getSubject(); + default Instant getExpiresAtAsInstant(){ return null; } + default Instant getIssuedAtAsInstant(){ return null; } + default Instant getNotBeforeAsInstant(){ return null; } +} diff --git a/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/interfaces/RSAKeyProvider.java b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/interfaces/RSAKeyProvider.java new file mode 100644 index 00000000000..d9b12ff1679 --- /dev/null +++ b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/interfaces/RSAKeyProvider.java @@ -0,0 +1,13 @@ +// Generated automatically from com.auth0.jwt.interfaces.RSAKeyProvider for testing purposes + +package com.auth0.jwt.interfaces; + +import com.auth0.jwt.interfaces.KeyProvider; +import java.security.PrivateKey; +import java.security.PublicKey; +import java.security.interfaces.RSAPrivateKey; +import java.security.interfaces.RSAPublicKey; + +public interface RSAKeyProvider extends KeyProvider +{ +} diff --git a/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/interfaces/Verification.java b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/interfaces/Verification.java new file mode 100644 index 00000000000..ea020ce9a57 --- /dev/null +++ b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/auth0/jwt/interfaces/Verification.java @@ -0,0 +1,38 @@ +// Generated automatically from com.auth0.jwt.interfaces.Verification for testing purposes + +package com.auth0.jwt.interfaces; + +import com.auth0.jwt.interfaces.Claim; +import com.auth0.jwt.interfaces.DecodedJWT; +import java.time.Instant; +import java.util.Date; +import java.util.function.BiPredicate; + +public interface Verification +{ + Verification acceptExpiresAt(long p0); + Verification acceptIssuedAt(long p0); + Verification acceptLeeway(long p0); + Verification acceptNotBefore(long p0); + Verification ignoreIssuedAt(); + Verification withAnyOfAudience(String... p0); + Verification withArrayClaim(String p0, Integer... p1); + Verification withArrayClaim(String p0, Long... p1); + Verification withArrayClaim(String p0, String... p1); + Verification withAudience(String... p0); + Verification withClaim(String p0, BiPredicate p1); + Verification withClaim(String p0, Boolean p1); + Verification withClaim(String p0, Date p1); + Verification withClaim(String p0, Double p1); + Verification withClaim(String p0, Integer p1); + Verification withClaim(String p0, Long p1); + Verification withClaim(String p0, String p1); + Verification withClaimPresence(String p0); + Verification withIssuer(String... p0); + Verification withJWTId(String p0); + Verification withNullClaim(String p0); + Verification withSubject(String p0); + com.auth0.jwt.JWTVerifier build(); + default Verification withClaim(String p0, Instant p1){ return null; } + default Verification withIssuer(String p0){ return null; } +} diff --git a/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/github/luben/zstd/BufferPool.java b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/github/luben/zstd/BufferPool.java new file mode 100644 index 00000000000..6b5c2b81dc0 --- /dev/null +++ b/java/ql/test/experimental/stubs/auth0-java-jwt-4.4.0/com/github/luben/zstd/BufferPool.java @@ -0,0 +1,11 @@ +// Generated automatically from com.github.luben.zstd.BufferPool for testing purposes + +package com.github.luben.zstd; + +import java.nio.ByteBuffer; + +public interface BufferPool +{ + ByteBuffer get(int p0); + void release(ByteBuffer p0); +} diff --git a/java/ql/test/experimental/stubs/org-apache-shiro-authc-2.0.1/org/apache/shiro/authc/AuthenticationToken.java b/java/ql/test/experimental/stubs/org-apache-shiro-authc-2.0.1/org/apache/shiro/authc/AuthenticationToken.java new file mode 100644 index 00000000000..1775519da36 --- /dev/null +++ b/java/ql/test/experimental/stubs/org-apache-shiro-authc-2.0.1/org/apache/shiro/authc/AuthenticationToken.java @@ -0,0 +1,11 @@ +// Generated automatically from org.apache.shiro.authc.AuthenticationToken for testing purposes + +package org.apache.shiro.authc; + +import java.io.Serializable; + +public interface AuthenticationToken extends Serializable +{ + Object getCredentials(); + Object getPrincipal(); +} diff --git a/java/ql/test/experimental/stubs/org-apache-shiro-authc-2.0.1/org/apache/shiro/authc/BearerToken.java b/java/ql/test/experimental/stubs/org-apache-shiro-authc-2.0.1/org/apache/shiro/authc/BearerToken.java new file mode 100644 index 00000000000..6dc1bf9d9f9 --- /dev/null +++ b/java/ql/test/experimental/stubs/org-apache-shiro-authc-2.0.1/org/apache/shiro/authc/BearerToken.java @@ -0,0 +1,16 @@ +// Generated automatically from org.apache.shiro.authc.BearerToken for testing purposes + +package org.apache.shiro.authc; + +import org.apache.shiro.authc.HostAuthenticationToken; + +public class BearerToken implements HostAuthenticationToken +{ + protected BearerToken() {} + public BearerToken(String p0){} + public BearerToken(String p0, String p1){} + public Object getCredentials(){ return null; } + public Object getPrincipal(){ return null; } + public String getHost(){ return null; } + public String getToken(){ return null; } +} diff --git a/java/ql/test/experimental/stubs/org-apache-shiro-authc-2.0.1/org/apache/shiro/authc/HostAuthenticationToken.java b/java/ql/test/experimental/stubs/org-apache-shiro-authc-2.0.1/org/apache/shiro/authc/HostAuthenticationToken.java new file mode 100644 index 00000000000..f199cd78211 --- /dev/null +++ b/java/ql/test/experimental/stubs/org-apache-shiro-authc-2.0.1/org/apache/shiro/authc/HostAuthenticationToken.java @@ -0,0 +1,10 @@ +// Generated automatically from org.apache.shiro.authc.HostAuthenticationToken for testing purposes + +package org.apache.shiro.authc; + +import org.apache.shiro.authc.AuthenticationToken; + +public interface HostAuthenticationToken extends AuthenticationToken +{ + String getHost(); +} diff --git a/java/ql/test/library-tests/dataflow/capture/inlinetest.expected b/java/ql/test/library-tests/dataflow/capture/inlinetest.expected index 0987959e449..5c08b6d3c31 100644 --- a/java/ql/test/library-tests/dataflow/capture/inlinetest.expected +++ b/java/ql/test/library-tests/dataflow/capture/inlinetest.expected @@ -116,16 +116,13 @@ edges | B.java:107:31:111:5 | ...->... : new Consumer(...) { ... } [String s] : String | B.java:107:31:111:5 | parameter this : new Consumer(...) { ... } [String s] : String | provenance | heuristic-callback | | B.java:107:31:111:5 | ...->... [post update] : new Consumer(...) { ... } [List out1, ] : String | B.java:107:31:111:5 | List out1 : ArrayList [] : String | provenance | | | B.java:107:31:111:5 | ...->... [post update] : new Consumer(...) { ... } [List out2, ] : String | B.java:107:31:111:5 | List out2 : ArrayList [] : String | provenance | | -| B.java:107:31:111:5 | ...->... [post update] : new Consumer(...) { ... } [List out2, ] : String | B.java:107:31:111:5 | List out2 : ArrayList [] : String | provenance | | | B.java:107:31:111:5 | List out1 : ArrayList [] : String | B.java:107:31:111:5 | this : new Consumer>(...) { ... } [List out1, ] : String | provenance | | | B.java:107:31:111:5 | List out2 : ArrayList [] : String | B.java:107:31:111:5 | this : new Consumer>(...) { ... } [List out2, ] : String | provenance | | -| B.java:107:31:111:5 | List out2 : ArrayList [] : String | B.java:107:31:111:5 | this : new Consumer>(...) { ... } [List out2, ] : String | provenance | | | B.java:107:31:111:5 | String s : String | B.java:107:31:111:5 | ...->... : new Consumer(...) { ... } [String s] : String | provenance | | | B.java:107:31:111:5 | parameter this : new Consumer(...) { ... } [String s] : String | B.java:108:12:108:12 | this : new Consumer(...) { ... } [String s] : String | provenance | | | B.java:107:31:111:5 | parameter this : new Consumer(...) { ... } [String s] : String | B.java:110:16:110:16 | this : new Consumer(...) { ... } [String s] : String | provenance | | | B.java:107:31:111:5 | this : new Consumer>(...) { ... } [List out1, ] : String | B.java:107:16:111:6 | parameter this [Return] : new Consumer>(...) { ... } [List out1, ] : String | provenance | | | B.java:107:31:111:5 | this : new Consumer>(...) { ... } [List out2, ] : String | B.java:107:16:111:6 | parameter this [Return] : new Consumer>(...) { ... } [List out2, ] : String | provenance | | -| B.java:107:31:111:5 | this : new Consumer>(...) { ... } [List out2, ] : String | B.java:107:16:111:6 | parameter this [Return] : new Consumer>(...) { ... } [List out2, ] : String | provenance | | | B.java:107:31:111:5 | this : new Consumer>(...) { ... } [String s] : String | B.java:107:31:111:5 | String s : String | provenance | | | B.java:108:12:108:12 | this : new Consumer(...) { ... } [String s] : String | B.java:108:12:108:12 | s | provenance | | | B.java:109:7:109:10 | out1 [post update] : ArrayList [] : String | B.java:109:7:109:10 | this : new Consumer(...) { ... } [List out1, ] : String | provenance | | @@ -363,23 +360,19 @@ nodes | B.java:107:16:111:6 | parameter this : new Consumer>(...) { ... } [String s] : String | semmle.label | parameter this : new Consumer>(...) { ... } [String s] : String | | B.java:107:16:111:6 | parameter this [Return] : new Consumer>(...) { ... } [List out1, ] : String | semmle.label | parameter this [Return] : new Consumer>(...) { ... } [List out1, ] : String | | B.java:107:16:111:6 | parameter this [Return] : new Consumer>(...) { ... } [List out2, ] : String | semmle.label | parameter this [Return] : new Consumer>(...) { ... } [List out2, ] : String | -| B.java:107:16:111:6 | parameter this [Return] : new Consumer>(...) { ... } [List out2, ] : String | semmle.label | parameter this [Return] : new Consumer>(...) { ... } [List out2, ] : String | | B.java:107:21:107:21 | l : ArrayList [] : String | semmle.label | l : ArrayList [] : String | | B.java:107:31:107:31 | x : String | semmle.label | x : String | | B.java:107:31:111:5 | ...->... : new Consumer(...) { ... } [String s] : String | semmle.label | ...->... : new Consumer(...) { ... } [String s] : String | | B.java:107:31:111:5 | ...->... [post update] : new Consumer(...) { ... } [List out1, ] : String | semmle.label | ...->... [post update] : new Consumer(...) { ... } [List out1, ] : String | | B.java:107:31:111:5 | ...->... [post update] : new Consumer(...) { ... } [List out2, ] : String | semmle.label | ...->... [post update] : new Consumer(...) { ... } [List out2, ] : String | -| B.java:107:31:111:5 | ...->... [post update] : new Consumer(...) { ... } [List out2, ] : String | semmle.label | ...->... [post update] : new Consumer(...) { ... } [List out2, ] : String | | B.java:107:31:111:5 | List out1 : ArrayList [] : String | semmle.label | List out1 : ArrayList [] : String | | B.java:107:31:111:5 | List out2 : ArrayList [] : String | semmle.label | List out2 : ArrayList [] : String | -| B.java:107:31:111:5 | List out2 : ArrayList [] : String | semmle.label | List out2 : ArrayList [] : String | | B.java:107:31:111:5 | String s : String | semmle.label | String s : String | | B.java:107:31:111:5 | parameter this : new Consumer(...) { ... } [String s] : String | semmle.label | parameter this : new Consumer(...) { ... } [String s] : String | | B.java:107:31:111:5 | parameter this [Return] : new Consumer(...) { ... } [List out1, ] : String | semmle.label | parameter this [Return] : new Consumer(...) { ... } [List out1, ] : String | | B.java:107:31:111:5 | parameter this [Return] : new Consumer(...) { ... } [List out2, ] : String | semmle.label | parameter this [Return] : new Consumer(...) { ... } [List out2, ] : String | | B.java:107:31:111:5 | this : new Consumer>(...) { ... } [List out1, ] : String | semmle.label | this : new Consumer>(...) { ... } [List out1, ] : String | | B.java:107:31:111:5 | this : new Consumer>(...) { ... } [List out2, ] : String | semmle.label | this : new Consumer>(...) { ... } [List out2, ] : String | -| B.java:107:31:111:5 | this : new Consumer>(...) { ... } [List out2, ] : String | semmle.label | this : new Consumer>(...) { ... } [List out2, ] : String | | B.java:107:31:111:5 | this : new Consumer>(...) { ... } [String s] : String | semmle.label | this : new Consumer>(...) { ... } [String s] : String | | B.java:108:12:108:12 | s | semmle.label | s | | B.java:108:12:108:12 | this : new Consumer(...) { ... } [String s] : String | semmle.label | this : new Consumer(...) { ... } [String s] : String | @@ -527,10 +520,8 @@ subpaths | B.java:46:13:46:14 | m1 : HashMap [] : String | B.java:38:23:38:45 | inp : HashMap [] : String | B.java:38:48:38:70 | out [Return] : HashMap [] : String | B.java:46:17:46:18 | m2 [post update] : HashMap [] : String | | B.java:107:5:107:6 | l2 : ArrayList [, ] : String | B.java:107:16:107:16 | l : ArrayList [] : String | B.java:107:16:111:6 | parameter this [Return] : new Consumer>(...) { ... } [List out1, ] : String | B.java:107:16:111:6 | ...->... [post update] : new Consumer>(...) { ... } [List out1, ] : String | | B.java:107:16:111:6 | ...->... : new Consumer>(...) { ... } [String s] : String | B.java:107:16:111:6 | parameter this : new Consumer>(...) { ... } [String s] : String | B.java:107:16:111:6 | parameter this [Return] : new Consumer>(...) { ... } [List out2, ] : String | B.java:107:16:111:6 | ...->... [post update] : new Consumer>(...) { ... } [List out2, ] : String | -| B.java:107:16:111:6 | ...->... : new Consumer>(...) { ... } [String s] : String | B.java:107:16:111:6 | parameter this : new Consumer>(...) { ... } [String s] : String | B.java:107:16:111:6 | parameter this [Return] : new Consumer>(...) { ... } [List out2, ] : String | B.java:107:16:111:6 | ...->... [post update] : new Consumer>(...) { ... } [List out2, ] : String | | B.java:107:21:107:21 | l : ArrayList [] : String | B.java:107:31:107:31 | x : String | B.java:107:31:111:5 | parameter this [Return] : new Consumer(...) { ... } [List out1, ] : String | B.java:107:31:111:5 | ...->... [post update] : new Consumer(...) { ... } [List out1, ] : String | | B.java:107:31:111:5 | ...->... : new Consumer(...) { ... } [String s] : String | B.java:107:31:111:5 | parameter this : new Consumer(...) { ... } [String s] : String | B.java:107:31:111:5 | parameter this [Return] : new Consumer(...) { ... } [List out2, ] : String | B.java:107:31:111:5 | ...->... [post update] : new Consumer(...) { ... } [List out2, ] : String | -| B.java:107:31:111:5 | ...->... : new Consumer(...) { ... } [String s] : String | B.java:107:31:111:5 | parameter this : new Consumer(...) { ... } [String s] : String | B.java:107:31:111:5 | parameter this [Return] : new Consumer(...) { ... } [List out2, ] : String | B.java:107:31:111:5 | ...->... [post update] : new Consumer(...) { ... } [List out2, ] : String | | B.java:137:5:137:5 | r : new TwoRuns(...) { ... } [List l1, ] : String | B.java:130:19:130:22 | parameter this : new TwoRuns(...) { ... } [List l1, ] : String | B.java:130:19:130:22 | parameter this [Return] : new TwoRuns(...) { ... } [List l2, ] : String | B.java:137:5:137:5 | r [post update] : new TwoRuns(...) { ... } [List l2, ] : String | | B.java:148:17:148:29 | new MyLocal(...) [pre constructor] : MyLocal [String s] : String | B.java:145:7:145:13 | parameter this : MyLocal [String s] : String | B.java:145:7:145:13 | parameter this [Return] : MyLocal [f] : String | B.java:148:17:148:29 | new MyLocal(...) : MyLocal [f] : String | | B.java:149:10:149:10 | m : MyLocal [f] : String | B.java:146:14:146:17 | parameter this : MyLocal [f] : String | B.java:146:30:146:35 | this.f : String | B.java:149:10:149:17 | getF(...) | 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/dataflow/implicit-read/A.java b/java/ql/test/library-tests/dataflow/implicit-read/A.java new file mode 100644 index 00000000000..fbc4212b3b2 --- /dev/null +++ b/java/ql/test/library-tests/dataflow/implicit-read/A.java @@ -0,0 +1,27 @@ +public class A { + String field; + + static String source(String name) { + return name; + } + + static void sink(Object o) {} + + static String step(Object o) { + return ""; + } + + static Object getA() { + A a = new A(); + a.field = source("source"); + return a; + } + + static void test() { + Object object = getA(); + + sink(step(object)); // $ hasTaintFlow=source + sink(object); + sink(((A)object).field); // $ hasTaintFlow=source + } +} diff --git a/swift/ql/integration-tests/osx-only/autobuilder/no-build-system/x.swift b/java/ql/test/library-tests/dataflow/implicit-read/test.expected similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/no-build-system/x.swift rename to java/ql/test/library-tests/dataflow/implicit-read/test.expected diff --git a/java/ql/test/library-tests/dataflow/implicit-read/test.ql b/java/ql/test/library-tests/dataflow/implicit-read/test.ql new file mode 100644 index 00000000000..4b07984456b --- /dev/null +++ b/java/ql/test/library-tests/dataflow/implicit-read/test.ql @@ -0,0 +1,22 @@ +import java +import TestUtilities.InlineFlowTest + +module TestConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node source) { DefaultFlowConfig::isSource(source) } + + predicate isSink(DataFlow::Node sink) { DefaultFlowConfig::isSink(sink) } + + predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { + exists(MethodCall call | + call.getMethod().getName() = "step" and + node1.asExpr() = call.getArgument(0) and + node2.asExpr() = call + ) + } + + predicate allowImplicitRead(DataFlow::Node node, DataFlow::ContentSet content) { + isAdditionalFlowStep(node, _) and content instanceof DataFlow::FieldContent + } +} + +import TaintFlowTest diff --git a/java/ql/test/library-tests/frameworks/apache-collections/test.expected b/java/ql/test/library-tests/frameworks/apache-collections/test.expected index 76ef7c2b4cf..96a0a4853c3 100644 --- a/java/ql/test/library-tests/frameworks/apache-collections/test.expected +++ b/java/ql/test/library-tests/frameworks/apache-collections/test.expected @@ -1663,7 +1663,6 @@ edges | Test.java:257:91:257:97 | element : String | Test.java:257:73:257:98 | of(...) : FluentIterable [] : String | provenance | MaD:469 | | Test.java:258:49:258:57 | element : String | Test.java:258:110:258:116 | element : String | provenance | | | Test.java:258:104:258:104 | x [post update] : HashMultiSet [] : String | Test.java:258:127:258:127 | x : HashMultiSet [] : String | provenance | | -| Test.java:258:104:258:104 | x [post update] : HashMultiSet [] : String | Test.java:258:127:258:127 | x : HashMultiSet [] : String | provenance | | | Test.java:258:110:258:116 | element : String | Test.java:258:104:258:104 | x [post update] : HashMultiSet [] : String | provenance | MaD:2 | | Test.java:258:110:258:116 | element : String | Test.java:258:104:258:104 | x [post update] : HashMultiSet [] : String | provenance | MaD:673 | | Test.java:259:49:259:57 | element : String | Test.java:259:90:259:96 | element : String | provenance | | @@ -1683,17 +1682,13 @@ edges | Test.java:261:77:261:83 | element : String | Test.java:261:61:261:93 | new MultiKey(...) : MultiKey [] : String | provenance | MaD:215 | | Test.java:262:52:262:60 | element : String | Test.java:262:106:262:112 | element : String | provenance | | | Test.java:262:83:262:113 | newMultiSetWithElement(...) : HashMultiSet [] : String | Test.java:262:83:262:124 | entrySet(...) : Set [, ] : String | provenance | MaD:674 | -| Test.java:262:83:262:113 | newMultiSetWithElement(...) : HashMultiSet [] : String | Test.java:262:83:262:124 | entrySet(...) : Set [, ] : String | provenance | MaD:674 | | Test.java:262:83:262:124 | entrySet(...) : Set [, ] : String | Test.java:230:19:230:32 | it : Set [, ] : String | provenance | | -| Test.java:262:83:262:124 | entrySet(...) : Set [, ] : String | Test.java:230:19:230:32 | it : Set [, ] : String | provenance | | -| Test.java:262:83:262:124 | entrySet(...) : Set [, ] : String | Test.java:262:72:262:125 | getElement(...) : Entry [] : String | provenance | MaD:1 | | Test.java:262:83:262:124 | entrySet(...) : Set [, ] : String | Test.java:262:72:262:125 | getElement(...) : Entry [] : String | provenance | MaD:1 | | Test.java:262:106:262:112 | element : String | Test.java:262:83:262:113 | newMultiSetWithElement(...) : HashMultiSet [] : String | provenance | MaD:2 | | Test.java:262:106:262:112 | element : String | Test.java:262:83:262:113 | newMultiSetWithElement(...) : HashMultiSet [] : String | provenance | MaD:673 | | Test.java:262:106:262:112 | element : String | Test.java:263:41:263:49 | element : String | provenance | | | Test.java:263:41:263:49 | element : String | Test.java:263:102:263:108 | element : String | provenance | | | Test.java:263:96:263:96 | h [post update] : HashMultiSet [] : String | Test.java:263:119:263:119 | h : HashMultiSet [] : String | provenance | | -| Test.java:263:96:263:96 | h [post update] : HashMultiSet [] : String | Test.java:263:119:263:119 | h : HashMultiSet [] : String | provenance | | | Test.java:263:102:263:108 | element : String | Test.java:263:96:263:96 | h [post update] : HashMultiSet [] : String | provenance | MaD:2 | | Test.java:263:102:263:108 | element : String | Test.java:263:96:263:96 | h [post update] : HashMultiSet [] : String | provenance | MaD:673 | | Test.java:264:80:264:88 | element : String | Test.java:264:177:264:183 | element : String | provenance | | @@ -1708,8 +1703,6 @@ edges | Test.java:267:39:267:47 | element : ListIterator [] : String | Test.java:267:90:267:96 | element : ListIterator [] : String | provenance | | | Test.java:267:39:267:47 | element : String | Test.java:267:90:267:96 | element : String | provenance | | | Test.java:267:84:267:84 | b [post update] : TreeBag [, ] : String | Test.java:267:107:267:107 | b : TreeBag [, ] : String | provenance | | -| Test.java:267:84:267:84 | b [post update] : TreeBag [, ] : String | Test.java:267:107:267:107 | b : TreeBag [, ] : String | provenance | | -| Test.java:267:84:267:84 | b [post update] : TreeBag [] : String | Test.java:267:107:267:107 | b : TreeBag [] : String | provenance | | | Test.java:267:84:267:84 | b [post update] : TreeBag [] : String | Test.java:267:107:267:107 | b : TreeBag [] : String | provenance | | | Test.java:267:90:267:96 | element : ListIterator [] : String | Test.java:267:84:267:84 | b [post update] : TreeBag [, ] : String | provenance | MaD:2 | | Test.java:267:90:267:96 | element : ListIterator [] : String | Test.java:267:84:267:84 | b [post update] : TreeBag [, ] : String | provenance | MaD:395 | @@ -1734,7 +1727,6 @@ edges | Test.java:274:114:274:116 | key : String | Test.java:274:107:274:123 | of(...) : Map [] : String | provenance | MaD:11 | | Test.java:275:49:275:53 | key : String | Test.java:275:107:275:109 | key : String | provenance | | | Test.java:275:101:275:101 | m [post update] : HashedMap [] : String | Test.java:275:125:275:125 | m : HashedMap [] : String | provenance | | -| Test.java:275:101:275:101 | m [post update] : HashedMap [] : String | Test.java:275:125:275:125 | m : HashedMap [] : String | provenance | | | Test.java:275:107:275:109 | key : String | Test.java:275:101:275:101 | m [post update] : HashedMap [] : String | provenance | MaD:14 | | Test.java:275:107:275:109 | key : String | Test.java:275:101:275:101 | m [post update] : HashedMap [] : String | provenance | MaD:705 | | Test.java:276:49:276:53 | key : String | Test.java:276:96:276:98 | key : String | provenance | | @@ -1748,8 +1740,6 @@ edges | Test.java:277:122:277:124 | key : String | Test.java:277:115:277:131 | of(...) : Map [] : String | provenance | MaD:11 | | Test.java:279:47:279:51 | key : String | Test.java:279:113:279:115 | key : String | provenance | | | Test.java:279:107:279:107 | m [post update] : MultiValueMap [] : String | Test.java:279:131:279:131 | m : MultiValueMap [] : String | provenance | | -| Test.java:279:107:279:107 | m [post update] : MultiValueMap [] : String | Test.java:279:131:279:131 | m : MultiValueMap [] : String | provenance | | -| Test.java:279:107:279:107 | m [post update] : MultiValueMap [] : String | Test.java:279:131:279:131 | m : MultiValueMap [] : String | provenance | | | Test.java:279:113:279:115 | key : String | Test.java:279:107:279:107 | m [post update] : MultiValueMap [] : String | provenance | MaD:14 | | Test.java:279:113:279:115 | key : String | Test.java:279:107:279:107 | m [post update] : MultiValueMap [] : String | provenance | MaD:661 | | Test.java:279:113:279:115 | key : String | Test.java:279:107:279:107 | m [post update] : MultiValueMap [] : String | provenance | MaD:705 | @@ -1766,11 +1756,9 @@ edges | Test.java:282:102:282:104 | key : String | Test.java:7043:22:7043:26 | key : String | provenance | | | Test.java:283:53:283:57 | key : String | Test.java:283:111:283:113 | key : String | provenance | | | Test.java:283:105:283:105 | m [post update] : LinkedMap [] : String | Test.java:283:129:283:129 | m : LinkedMap [] : String | provenance | | -| Test.java:283:105:283:105 | m [post update] : LinkedMap [] : String | Test.java:283:129:283:129 | m : LinkedMap [] : String | provenance | | | Test.java:283:111:283:113 | key : String | Test.java:283:105:283:105 | m [post update] : LinkedMap [] : String | provenance | MaD:14 | | Test.java:283:111:283:113 | key : String | Test.java:283:105:283:105 | m [post update] : LinkedMap [] : String | provenance | MaD:705 | | Test.java:283:129:283:129 | m : LinkedMap [] : String | Test.java:283:129:283:143 | mapIterator(...) : OrderedMapIterator [] : String | provenance | MaD:487 | -| Test.java:283:129:283:129 | m : LinkedMap [] : String | Test.java:283:129:283:143 | mapIterator(...) : OrderedMapIterator [] : String | provenance | MaD:487 | | Test.java:285:47:285:51 | key : String | Test.java:285:103:285:105 | key : String | provenance | | | Test.java:285:97:285:97 | m [post update] : TreeMap [] : String | Test.java:285:121:285:121 | m : TreeMap [] : String | provenance | | | Test.java:285:103:285:105 | key : String | Test.java:285:97:285:97 | m [post update] : TreeMap [] : String | provenance | MaD:14 | @@ -1778,12 +1766,10 @@ edges | Test.java:286:113:286:115 | key : String | Test.java:286:62:286:116 | new TiedMapEntry(...) : TiedMapEntry [] : String | provenance | MaD:234 | | Test.java:287:75:287:79 | key : String | Test.java:287:137:287:139 | key : String | provenance | | | Test.java:287:131:287:131 | m [post update] : TreeBidiMap [] : String | Test.java:287:155:287:155 | m : TreeBidiMap [] : String | provenance | | -| Test.java:287:131:287:131 | m [post update] : TreeBidiMap [] : String | Test.java:287:155:287:155 | m : TreeBidiMap [] : String | provenance | | | Test.java:287:137:287:139 | key : String | Test.java:287:131:287:131 | m [post update] : TreeBidiMap [] : String | provenance | MaD:14 | | Test.java:287:137:287:139 | key : String | Test.java:287:131:287:131 | m [post update] : TreeBidiMap [] : String | provenance | MaD:705 | | Test.java:288:49:288:58 | key : String | Test.java:288:116:288:118 | key : String | provenance | | | Test.java:288:110:288:110 | m [post update] : PatriciaTrie [] : String | Test.java:288:134:288:134 | m : PatriciaTrie [] : String | provenance | | -| Test.java:288:110:288:110 | m [post update] : PatriciaTrie [] : String | Test.java:288:134:288:134 | m : PatriciaTrie [] : String | provenance | | | Test.java:288:116:288:118 | key : String | Test.java:288:110:288:110 | m [post update] : PatriciaTrie [] : String | provenance | MaD:14 | | Test.java:288:116:288:118 | key : String | Test.java:288:110:288:110 | m [post update] : PatriciaTrie [] : String | provenance | MaD:705 | | Test.java:290:60:290:66 | value : String | Test.java:290:151:290:155 | value : String | provenance | | @@ -1796,7 +1782,6 @@ edges | Test.java:292:124:292:128 | value : String | Test.java:292:111:292:129 | of(...) : Map [] : String | provenance | MaD:12 | | Test.java:293:51:293:57 | value : String | Test.java:293:116:293:120 | value : String | provenance | | | Test.java:293:105:293:105 | m [post update] : HashedMap [] : String | Test.java:293:131:293:131 | m : HashedMap [] : String | provenance | | -| Test.java:293:105:293:105 | m [post update] : HashedMap [] : String | Test.java:293:131:293:131 | m : HashedMap [] : String | provenance | | | Test.java:293:116:293:120 | value : String | Test.java:293:105:293:105 | m [post update] : HashedMap [] : String | provenance | MaD:15 | | Test.java:293:116:293:120 | value : String | Test.java:293:105:293:105 | m [post update] : HashedMap [] : String | provenance | MaD:706 | | Test.java:294:58:294:64 | value : String | Test.java:294:145:294:149 | value : String | provenance | | @@ -1817,7 +1802,6 @@ edges | Test.java:298:49:298:55 | value : String | Test.java:298:122:298:126 | value : String | provenance | | | Test.java:298:111:298:111 | m [post update] : MultiValueMap [, ] : String | Test.java:298:137:298:137 | m : MultiValueMap [, ] : String | provenance | | | Test.java:298:111:298:111 | m [post update] : MultiValueMap [] : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | provenance | | -| Test.java:298:111:298:111 | m [post update] : MultiValueMap [] : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | provenance | | | Test.java:298:122:298:126 | value : String | Test.java:298:111:298:111 | m [post update] : MultiValueMap [, ] : String | provenance | MaD:662 | | Test.java:298:122:298:126 | value : String | Test.java:298:111:298:111 | m [post update] : MultiValueMap [] : String | provenance | MaD:15 | | Test.java:298:122:298:126 | value : String | Test.java:298:111:298:111 | m [post update] : MultiValueMap [] : String | provenance | MaD:706 | @@ -1834,11 +1818,9 @@ edges | Test.java:301:145:301:149 | value : String | Test.java:301:125:301:150 | newMAMEWithMapValue(...) : MyAbstractMapEntry [] : String | provenance | MaD:196 | | Test.java:302:54:302:60 | value : String | Test.java:302:119:302:123 | value : String | provenance | | | Test.java:302:108:302:108 | m [post update] : LinkedMap [] : String | Test.java:302:134:302:134 | m : LinkedMap [] : String | provenance | | -| Test.java:302:108:302:108 | m [post update] : LinkedMap [] : String | Test.java:302:134:302:134 | m : LinkedMap [] : String | provenance | | | Test.java:302:119:302:123 | value : String | Test.java:302:108:302:108 | m [post update] : LinkedMap [] : String | provenance | MaD:15 | | Test.java:302:119:302:123 | value : String | Test.java:302:108:302:108 | m [post update] : LinkedMap [] : String | provenance | MaD:706 | | Test.java:302:134:302:134 | m : LinkedMap [] : String | Test.java:302:134:302:148 | mapIterator(...) : OrderedMapIterator [] : String | provenance | MaD:488 | -| Test.java:302:134:302:134 | m : LinkedMap [] : String | Test.java:302:134:302:148 | mapIterator(...) : OrderedMapIterator [] : String | provenance | MaD:488 | | Test.java:304:49:304:55 | value : Map | Test.java:304:112:304:116 | value : Map | provenance | | | Test.java:304:49:304:55 | value : String | Test.java:304:112:304:116 | value : String | provenance | | | Test.java:304:101:304:101 | m [post update] : TreeMap [] : Map | Test.java:304:127:304:127 | m : TreeMap [] : Map | provenance | | @@ -1851,12 +1833,10 @@ edges | Test.java:305:116:305:120 | value : String | Test.java:305:93:305:121 | newTreeMapWithMapValue(...) : TreeMap [] : String | provenance | MaD:15 | | Test.java:306:77:306:83 | value : String | Test.java:306:146:306:150 | value : String | provenance | | | Test.java:306:135:306:135 | m [post update] : TreeBidiMap [] : String | Test.java:306:161:306:161 | m : TreeBidiMap [] : String | provenance | | -| Test.java:306:135:306:135 | m [post update] : TreeBidiMap [] : String | Test.java:306:161:306:161 | m : TreeBidiMap [] : String | provenance | | | Test.java:306:146:306:150 | value : String | Test.java:306:135:306:135 | m [post update] : TreeBidiMap [] : String | provenance | MaD:15 | | Test.java:306:146:306:150 | value : String | Test.java:306:135:306:135 | m [post update] : TreeBidiMap [] : String | provenance | MaD:706 | | Test.java:307:50:307:56 | value : String | Test.java:307:114:307:118 | value : String | provenance | | | Test.java:307:103:307:103 | m [post update] : PatriciaTrie [] : String | Test.java:307:129:307:129 | m : PatriciaTrie [] : String | provenance | | -| Test.java:307:103:307:103 | m [post update] : PatriciaTrie [] : String | Test.java:307:129:307:129 | m : PatriciaTrie [] : String | provenance | | | Test.java:307:114:307:118 | value : String | Test.java:307:103:307:103 | m [post update] : PatriciaTrie [] : String | provenance | MaD:15 | | Test.java:307:114:307:118 | value : String | Test.java:307:103:307:103 | m [post update] : PatriciaTrie [] : String | provenance | MaD:706 | | Test.java:308:56:308:62 | value : String | Test.java:308:114:308:118 | value : String | provenance | | @@ -10555,7 +10535,6 @@ nodes | Test.java:239:18:239:57 | container : MyAbstractMapEntryDecorator [] : String | semmle.label | container : MyAbstractMapEntryDecorator [] : String | | Test.java:239:69:239:77 | container : MyAbstractMapEntryDecorator [] : String | semmle.label | container : MyAbstractMapEntryDecorator [] : String | | Test.java:239:69:239:86 | getKey(...) : String | semmle.label | getKey(...) : String | -| Test.java:239:69:239:86 | getKey(...) : String | semmle.label | getKey(...) : String | | Test.java:240:18:240:46 | container : ArrayListValuedHashMap [] : String | semmle.label | container : ArrayListValuedHashMap [] : String | | Test.java:240:18:240:46 | container : HashSetValuedHashMap [] : String | semmle.label | container : HashSetValuedHashMap [] : String | | Test.java:240:18:240:46 | container : MultiValuedMap [] : Object | semmle.label | container : MultiValuedMap [] : Object | @@ -10641,7 +10620,6 @@ nodes | Test.java:245:20:245:59 | container : MyAbstractMapEntryDecorator [] : String | semmle.label | container : MyAbstractMapEntryDecorator [] : String | | Test.java:245:71:245:79 | container : MyAbstractMapEntryDecorator [] : String | semmle.label | container : MyAbstractMapEntryDecorator [] : String | | Test.java:245:71:245:90 | getValue(...) : String | semmle.label | getValue(...) : String | -| Test.java:245:71:245:90 | getValue(...) : String | semmle.label | getValue(...) : String | | Test.java:246:20:246:47 | mapIterator : EntrySetToMapIteratorAdapter [] : String | semmle.label | mapIterator : EntrySetToMapIteratorAdapter [] : String | | Test.java:246:20:246:47 | mapIterator : MapIterator [] : Object | semmle.label | mapIterator : MapIterator [] : Object | | Test.java:246:20:246:47 | mapIterator : MapIterator [] : String | semmle.label | mapIterator : MapIterator [] : String | @@ -10732,10 +10710,8 @@ nodes | Test.java:257:91:257:97 | element : String | semmle.label | element : String | | Test.java:258:49:258:57 | element : String | semmle.label | element : String | | Test.java:258:104:258:104 | x [post update] : HashMultiSet [] : String | semmle.label | x [post update] : HashMultiSet [] : String | -| Test.java:258:104:258:104 | x [post update] : HashMultiSet [] : String | semmle.label | x [post update] : HashMultiSet [] : String | | Test.java:258:110:258:116 | element : String | semmle.label | element : String | | Test.java:258:127:258:127 | x : HashMultiSet [] : String | semmle.label | x : HashMultiSet [] : String | -| Test.java:258:127:258:127 | x : HashMultiSet [] : String | semmle.label | x : HashMultiSet [] : String | | Test.java:259:49:259:57 | element : String | semmle.label | element : String | | Test.java:259:69:259:97 | newVectorWithElement(...) : Vector [] : String | semmle.label | newVectorWithElement(...) : Vector [] : String | | Test.java:259:69:259:112 | listIterator(...) : ListIterator [] : String | semmle.label | listIterator(...) : ListIterator [] : String | @@ -10757,18 +10733,13 @@ nodes | Test.java:261:77:261:83 | element : String | semmle.label | element : String | | Test.java:262:52:262:60 | element : String | semmle.label | element : String | | Test.java:262:72:262:125 | getElement(...) : Entry [] : String | semmle.label | getElement(...) : Entry [] : String | -| Test.java:262:72:262:125 | getElement(...) : Entry [] : String | semmle.label | getElement(...) : Entry [] : String | | Test.java:262:83:262:113 | newMultiSetWithElement(...) : HashMultiSet [] : String | semmle.label | newMultiSetWithElement(...) : HashMultiSet [] : String | -| Test.java:262:83:262:113 | newMultiSetWithElement(...) : HashMultiSet [] : String | semmle.label | newMultiSetWithElement(...) : HashMultiSet [] : String | -| Test.java:262:83:262:124 | entrySet(...) : Set [, ] : String | semmle.label | entrySet(...) : Set [, ] : String | | Test.java:262:83:262:124 | entrySet(...) : Set [, ] : String | semmle.label | entrySet(...) : Set [, ] : String | | Test.java:262:106:262:112 | element : String | semmle.label | element : String | | Test.java:263:41:263:49 | element : String | semmle.label | element : String | | Test.java:263:96:263:96 | h [post update] : HashMultiSet [] : String | semmle.label | h [post update] : HashMultiSet [] : String | -| Test.java:263:96:263:96 | h [post update] : HashMultiSet [] : String | semmle.label | h [post update] : HashMultiSet [] : String | | Test.java:263:102:263:108 | element : String | semmle.label | element : String | | Test.java:263:119:263:119 | h : HashMultiSet [] : String | semmle.label | h : HashMultiSet [] : String | -| Test.java:263:119:263:119 | h : HashMultiSet [] : String | semmle.label | h : HashMultiSet [] : String | | Test.java:264:80:264:88 | element : String | semmle.label | element : String | | Test.java:264:171:264:171 | x [post update] : Builder [] : String | semmle.label | x [post update] : Builder [] : String | | Test.java:264:177:264:183 | element : String | semmle.label | element : String | @@ -10784,14 +10755,10 @@ nodes | Test.java:267:39:267:47 | element : ListIterator [] : String | semmle.label | element : ListIterator [] : String | | Test.java:267:39:267:47 | element : String | semmle.label | element : String | | Test.java:267:84:267:84 | b [post update] : TreeBag [, ] : String | semmle.label | b [post update] : TreeBag [, ] : String | -| Test.java:267:84:267:84 | b [post update] : TreeBag [, ] : String | semmle.label | b [post update] : TreeBag [, ] : String | -| Test.java:267:84:267:84 | b [post update] : TreeBag [] : String | semmle.label | b [post update] : TreeBag [] : String | | Test.java:267:84:267:84 | b [post update] : TreeBag [] : String | semmle.label | b [post update] : TreeBag [] : String | | Test.java:267:90:267:96 | element : ListIterator [] : String | semmle.label | element : ListIterator [] : String | | Test.java:267:90:267:96 | element : String | semmle.label | element : String | | Test.java:267:107:267:107 | b : TreeBag [, ] : String | semmle.label | b : TreeBag [, ] : String | -| Test.java:267:107:267:107 | b : TreeBag [, ] : String | semmle.label | b : TreeBag [, ] : String | -| Test.java:267:107:267:107 | b : TreeBag [] : String | semmle.label | b : TreeBag [] : String | | Test.java:267:107:267:107 | b : TreeBag [] : String | semmle.label | b : TreeBag [] : String | | Test.java:268:39:268:47 | element : String | semmle.label | element : String | | Test.java:268:84:268:84 | h [post update] : TreeSet [] : String | semmle.label | h [post update] : TreeSet [] : String | @@ -10818,10 +10785,8 @@ nodes | Test.java:274:114:274:116 | key : String | semmle.label | key : String | | Test.java:275:49:275:53 | key : String | semmle.label | key : String | | Test.java:275:101:275:101 | m [post update] : HashedMap [] : String | semmle.label | m [post update] : HashedMap [] : String | -| Test.java:275:101:275:101 | m [post update] : HashedMap [] : String | semmle.label | m [post update] : HashedMap [] : String | | Test.java:275:107:275:109 | key : String | semmle.label | key : String | | Test.java:275:125:275:125 | m : HashedMap [] : String | semmle.label | m : HashedMap [] : String | -| Test.java:275:125:275:125 | m : HashedMap [] : String | semmle.label | m : HashedMap [] : String | | Test.java:276:49:276:53 | key : String | semmle.label | key : String | | Test.java:276:65:276:106 | new LinkedMap(...) : LinkedMap [] : String | semmle.label | new LinkedMap(...) : LinkedMap [] : String | | Test.java:276:89:276:105 | of(...) : Map [] : String | semmle.label | of(...) : Map [] : String | @@ -10836,12 +10801,8 @@ nodes | Test.java:277:122:277:124 | key : String | semmle.label | key : String | | Test.java:279:47:279:51 | key : String | semmle.label | key : String | | Test.java:279:107:279:107 | m [post update] : MultiValueMap [] : String | semmle.label | m [post update] : MultiValueMap [] : String | -| Test.java:279:107:279:107 | m [post update] : MultiValueMap [] : String | semmle.label | m [post update] : MultiValueMap [] : String | -| Test.java:279:107:279:107 | m [post update] : MultiValueMap [] : String | semmle.label | m [post update] : MultiValueMap [] : String | | Test.java:279:113:279:115 | key : String | semmle.label | key : String | | Test.java:279:131:279:131 | m : MultiValueMap [] : String | semmle.label | m : MultiValueMap [] : String | -| Test.java:279:131:279:131 | m : MultiValueMap [] : String | semmle.label | m : MultiValueMap [] : String | -| Test.java:279:131:279:131 | m : MultiValueMap [] : String | semmle.label | m : MultiValueMap [] : String | | Test.java:280:53:280:57 | key : String | semmle.label | key : String | | Test.java:280:69:280:110 | new MyAbstractMapEntry(...) : MyAbstractMapEntry [] : String | semmle.label | new MyAbstractMapEntry(...) : MyAbstractMapEntry [] : String | | Test.java:280:102:280:104 | key : String | semmle.label | key : String | @@ -10854,11 +10815,8 @@ nodes | Test.java:282:102:282:104 | key : String | semmle.label | key : String | | Test.java:283:53:283:57 | key : String | semmle.label | key : String | | Test.java:283:105:283:105 | m [post update] : LinkedMap [] : String | semmle.label | m [post update] : LinkedMap [] : String | -| Test.java:283:105:283:105 | m [post update] : LinkedMap [] : String | semmle.label | m [post update] : LinkedMap [] : String | | Test.java:283:111:283:113 | key : String | semmle.label | key : String | | Test.java:283:129:283:129 | m : LinkedMap [] : String | semmle.label | m : LinkedMap [] : String | -| Test.java:283:129:283:129 | m : LinkedMap [] : String | semmle.label | m : LinkedMap [] : String | -| Test.java:283:129:283:143 | mapIterator(...) : OrderedMapIterator [] : String | semmle.label | mapIterator(...) : OrderedMapIterator [] : String | | Test.java:283:129:283:143 | mapIterator(...) : OrderedMapIterator [] : String | semmle.label | mapIterator(...) : OrderedMapIterator [] : String | | Test.java:285:47:285:51 | key : String | semmle.label | key : String | | Test.java:285:97:285:97 | m [post update] : TreeMap [] : String | semmle.label | m [post update] : TreeMap [] : String | @@ -10869,16 +10827,12 @@ nodes | Test.java:286:113:286:115 | key : String | semmle.label | key : String | | Test.java:287:75:287:79 | key : String | semmle.label | key : String | | Test.java:287:131:287:131 | m [post update] : TreeBidiMap [] : String | semmle.label | m [post update] : TreeBidiMap [] : String | -| Test.java:287:131:287:131 | m [post update] : TreeBidiMap [] : String | semmle.label | m [post update] : TreeBidiMap [] : String | | Test.java:287:137:287:139 | key : String | semmle.label | key : String | | Test.java:287:155:287:155 | m : TreeBidiMap [] : String | semmle.label | m : TreeBidiMap [] : String | -| Test.java:287:155:287:155 | m : TreeBidiMap [] : String | semmle.label | m : TreeBidiMap [] : String | | Test.java:288:49:288:58 | key : String | semmle.label | key : String | | Test.java:288:110:288:110 | m [post update] : PatriciaTrie [] : String | semmle.label | m [post update] : PatriciaTrie [] : String | -| Test.java:288:110:288:110 | m [post update] : PatriciaTrie [] : String | semmle.label | m [post update] : PatriciaTrie [] : String | | Test.java:288:116:288:118 | key : String | semmle.label | key : String | | Test.java:288:134:288:134 | m : PatriciaTrie [] : String | semmle.label | m : PatriciaTrie [] : String | -| Test.java:288:134:288:134 | m : PatriciaTrie [] : String | semmle.label | m : PatriciaTrie [] : String | | Test.java:290:60:290:66 | value : String | semmle.label | value : String | | Test.java:290:140:290:140 | m [post update] : ArrayListValuedHashMap [, ] : String | semmle.label | m [post update] : ArrayListValuedHashMap [, ] : String | | Test.java:290:151:290:155 | value : String | semmle.label | value : String | @@ -10892,10 +10846,8 @@ nodes | Test.java:292:124:292:128 | value : String | semmle.label | value : String | | Test.java:293:51:293:57 | value : String | semmle.label | value : String | | Test.java:293:105:293:105 | m [post update] : HashedMap [] : String | semmle.label | m [post update] : HashedMap [] : String | -| Test.java:293:105:293:105 | m [post update] : HashedMap [] : String | semmle.label | m [post update] : HashedMap [] : String | | Test.java:293:116:293:120 | value : String | semmle.label | value : String | | Test.java:293:131:293:131 | m : HashedMap [] : String | semmle.label | m : HashedMap [] : String | -| Test.java:293:131:293:131 | m : HashedMap [] : String | semmle.label | m : HashedMap [] : String | | Test.java:294:58:294:64 | value : String | semmle.label | value : String | | Test.java:294:134:294:134 | m [post update] : HashSetValuedHashMap [, ] : String | semmle.label | m [post update] : HashSetValuedHashMap [, ] : String | | Test.java:294:145:294:149 | value : String | semmle.label | value : String | @@ -10919,11 +10871,9 @@ nodes | Test.java:298:49:298:55 | value : String | semmle.label | value : String | | Test.java:298:111:298:111 | m [post update] : MultiValueMap [, ] : String | semmle.label | m [post update] : MultiValueMap [, ] : String | | Test.java:298:111:298:111 | m [post update] : MultiValueMap [] : String | semmle.label | m [post update] : MultiValueMap [] : String | -| Test.java:298:111:298:111 | m [post update] : MultiValueMap [] : String | semmle.label | m [post update] : MultiValueMap [] : String | | Test.java:298:122:298:126 | value : String | semmle.label | value : String | | Test.java:298:137:298:137 | m : MultiValueMap [, ] : String | semmle.label | m : MultiValueMap [, ] : String | | Test.java:298:137:298:137 | m : MultiValueMap [] : String | semmle.label | m : MultiValueMap [] : String | -| Test.java:298:137:298:137 | m : MultiValueMap [] : String | semmle.label | m : MultiValueMap [] : String | | Test.java:299:55:299:61 | value : String | semmle.label | value : String | | Test.java:299:73:299:116 | new MyAbstractKeyValue(...) : MyAbstractKeyValue [] : String | semmle.label | new MyAbstractKeyValue(...) : MyAbstractKeyValue [] : String | | Test.java:299:111:299:115 | value : String | semmle.label | value : String | @@ -10936,11 +10886,8 @@ nodes | Test.java:301:145:301:149 | value : String | semmle.label | value : String | | Test.java:302:54:302:60 | value : String | semmle.label | value : String | | Test.java:302:108:302:108 | m [post update] : LinkedMap [] : String | semmle.label | m [post update] : LinkedMap [] : String | -| Test.java:302:108:302:108 | m [post update] : LinkedMap [] : String | semmle.label | m [post update] : LinkedMap [] : String | | Test.java:302:119:302:123 | value : String | semmle.label | value : String | | Test.java:302:134:302:134 | m : LinkedMap [] : String | semmle.label | m : LinkedMap [] : String | -| Test.java:302:134:302:134 | m : LinkedMap [] : String | semmle.label | m : LinkedMap [] : String | -| Test.java:302:134:302:148 | mapIterator(...) : OrderedMapIterator [] : String | semmle.label | mapIterator(...) : OrderedMapIterator [] : String | | Test.java:302:134:302:148 | mapIterator(...) : OrderedMapIterator [] : String | semmle.label | mapIterator(...) : OrderedMapIterator [] : String | | Test.java:304:49:304:55 | value : Map | semmle.label | value : Map | | Test.java:304:49:304:55 | value : String | semmle.label | value : String | @@ -10956,16 +10903,12 @@ nodes | Test.java:305:116:305:120 | value : String | semmle.label | value : String | | Test.java:306:77:306:83 | value : String | semmle.label | value : String | | Test.java:306:135:306:135 | m [post update] : TreeBidiMap [] : String | semmle.label | m [post update] : TreeBidiMap [] : String | -| Test.java:306:135:306:135 | m [post update] : TreeBidiMap [] : String | semmle.label | m [post update] : TreeBidiMap [] : String | | Test.java:306:146:306:150 | value : String | semmle.label | value : String | | Test.java:306:161:306:161 | m : TreeBidiMap [] : String | semmle.label | m : TreeBidiMap [] : String | -| Test.java:306:161:306:161 | m : TreeBidiMap [] : String | semmle.label | m : TreeBidiMap [] : String | | Test.java:307:50:307:56 | value : String | semmle.label | value : String | | Test.java:307:103:307:103 | m [post update] : PatriciaTrie [] : String | semmle.label | m [post update] : PatriciaTrie [] : String | -| Test.java:307:103:307:103 | m [post update] : PatriciaTrie [] : String | semmle.label | m [post update] : PatriciaTrie [] : String | | Test.java:307:114:307:118 | value : String | semmle.label | value : String | | Test.java:307:129:307:129 | m : PatriciaTrie [] : String | semmle.label | m : PatriciaTrie [] : String | -| Test.java:307:129:307:129 | m : PatriciaTrie [] : String | semmle.label | m : PatriciaTrie [] : String | | Test.java:308:56:308:62 | value : String | semmle.label | value : String | | Test.java:308:74:308:119 | new UnmodifiableMapEntry(...) : UnmodifiableMapEntry [] : String | semmle.label | new UnmodifiableMapEntry(...) : UnmodifiableMapEntry [] : String | | Test.java:308:114:308:118 | value : String | semmle.label | value : String | @@ -17799,10 +17742,6 @@ subpaths | Test.java:256:115:256:121 | element : String | Test.java:269:37:269:45 | element : String | Test.java:269:103:269:103 | v : Vector [] : String | Test.java:256:94:256:122 | newVectorWithElement(...) : Vector [] : String | | Test.java:259:90:259:96 | element : String | Test.java:269:37:269:45 | element : String | Test.java:269:103:269:103 | v : Vector [] : String | Test.java:259:69:259:97 | newVectorWithElement(...) : Vector [] : String | | Test.java:262:83:262:124 | entrySet(...) : Set [, ] : String | Test.java:230:19:230:32 | it : Set [, ] : String | Test.java:230:44:230:63 | next(...) : Object [] : String | Test.java:262:72:262:125 | getElement(...) : Entry [] : String | -| Test.java:262:83:262:124 | entrySet(...) : Set [, ] : String | Test.java:230:19:230:32 | it : Set [, ] : String | Test.java:230:44:230:63 | next(...) : Object [] : String | Test.java:262:72:262:125 | getElement(...) : Entry [] : String | -| Test.java:262:106:262:112 | element : String | Test.java:263:41:263:49 | element : String | Test.java:263:119:263:119 | h : HashMultiSet [] : String | Test.java:262:83:262:113 | newMultiSetWithElement(...) : HashMultiSet [] : String | -| Test.java:262:106:262:112 | element : String | Test.java:263:41:263:49 | element : String | Test.java:263:119:263:119 | h : HashMultiSet [] : String | Test.java:262:83:262:113 | newMultiSetWithElement(...) : HashMultiSet [] : String | -| Test.java:262:106:262:112 | element : String | Test.java:263:41:263:49 | element : String | Test.java:263:119:263:119 | h : HashMultiSet [] : String | Test.java:262:83:262:113 | newMultiSetWithElement(...) : HashMultiSet [] : String | | Test.java:262:106:262:112 | element : String | Test.java:263:41:263:49 | element : String | Test.java:263:119:263:119 | h : HashMultiSet [] : String | Test.java:262:83:262:113 | newMultiSetWithElement(...) : HashMultiSet [] : String | | Test.java:280:102:280:104 | key : String | Test.java:7057:22:7057:32 | key : String | Test.java:7057:3:7057:20 | parameter this [Return] : MyAbstractMapEntry [] : String | Test.java:280:69:280:110 | new MyAbstractMapEntry(...) : MyAbstractMapEntry [] : String | | Test.java:281:121:281:142 | newMAMEWithMapKey(...) : MyAbstractMapEntry [] : String | Test.java:7067:31:7067:57 | entry : MyAbstractMapEntry [] : String | Test.java:7067:3:7067:29 | parameter this [Return] : MyAbstractMapEntryDecorator [] : String | Test.java:281:79:281:143 | new MyAbstractMapEntryDecorator(...) : MyAbstractMapEntryDecorator [] : String | @@ -17843,11 +17782,9 @@ subpaths | Test.java:444:52:444:67 | (...)... : String | Test.java:280:53:280:57 | key : String | Test.java:280:69:280:110 | new MyAbstractMapEntry(...) : MyAbstractMapEntry [] : String | Test.java:444:34:444:68 | newMAMEWithMapKey(...) : MyAbstractMapEntry [] : String | | Test.java:445:42:445:43 | in : MyAbstractMapEntry [] : String | Test.java:7067:31:7067:57 | entry : MyAbstractMapEntry [] : String | Test.java:7067:3:7067:29 | parameter this [Return] : MyAbstractMapEntryDecorator [] : String | Test.java:445:10:445:44 | new MyAbstractMapEntryDecorator<>(...) : MyAbstractMapEntryDecorator [] : String | | Test.java:446:19:446:21 | out : MyAbstractMapEntryDecorator [] : String | Test.java:239:18:239:57 | container : MyAbstractMapEntryDecorator [] : String | Test.java:239:69:239:86 | getKey(...) : String | Test.java:446:9:446:22 | getMapKey(...) | -| Test.java:446:19:446:21 | out : MyAbstractMapEntryDecorator [] : String | Test.java:239:18:239:57 | container : MyAbstractMapEntryDecorator [] : String | Test.java:239:69:239:86 | getKey(...) : String | Test.java:446:9:446:22 | getMapKey(...) | | Test.java:451:54:451:69 | (...)... : String | Test.java:300:55:300:61 | value : String | Test.java:300:73:300:116 | new MyAbstractMapEntry(...) : MyAbstractMapEntry [] : String | Test.java:451:34:451:70 | newMAMEWithMapValue(...) : MyAbstractMapEntry [] : String | | Test.java:452:42:452:43 | in : MyAbstractMapEntry [] : String | Test.java:7067:31:7067:57 | entry : MyAbstractMapEntry [] : String | Test.java:7067:3:7067:29 | parameter this [Return] : MyAbstractMapEntryDecorator [] : String | Test.java:452:10:452:44 | new MyAbstractMapEntryDecorator<>(...) : MyAbstractMapEntryDecorator [] : String | | Test.java:453:21:453:23 | out : MyAbstractMapEntryDecorator [] : String | Test.java:245:20:245:59 | container : MyAbstractMapEntryDecorator [] : String | Test.java:245:71:245:90 | getValue(...) : String | Test.java:453:9:453:24 | getMapValue(...) | -| Test.java:453:21:453:23 | out : MyAbstractMapEntryDecorator [] : String | Test.java:245:20:245:59 | container : MyAbstractMapEntryDecorator [] : String | Test.java:245:71:245:90 | getValue(...) : String | Test.java:453:9:453:24 | getMapValue(...) | | Test.java:458:56:458:71 | (...)... : String | Test.java:281:63:281:67 | key : String | Test.java:281:79:281:143 | new MyAbstractMapEntryDecorator(...) : MyAbstractMapEntryDecorator [] : String | Test.java:458:37:458:72 | newMAMEDWithMapKey(...) : MyAbstractMapEntryDecorator [] : String | | Test.java:459:10:459:11 | in : MyAbstractMapEntryDecorator [] : String | Test.java:7071:19:7071:31 | parameter this : MyAbstractMapEntryDecorator [] : String | Test.java:7072:11:7072:29 | getMapEntry(...) : Entry [] : String | Test.java:459:10:459:27 | myGetMapEntry(...) : Entry [] : String | | Test.java:460:28:460:30 | out : Entry [] : String | Test.java:238:27:238:50 | container : Entry [] : String | Test.java:238:62:238:79 | getKey(...) : String | Test.java:460:9:460:31 | getMapKeyFromEntry(...) | @@ -18041,45 +17978,31 @@ subpaths | Test.java:1212:20:1212:22 | out : Bag [] : Object | Test.java:230:19:230:32 | it : Bag [] : Object | Test.java:230:44:230:63 | next(...) : Object | Test.java:1212:9:1212:23 | getElement(...) | | Test.java:1219:20:1219:22 | out : Bag [] : Object | Test.java:230:19:230:32 | it : Bag [] : Object | Test.java:230:44:230:63 | next(...) : Object | Test.java:1219:9:1219:23 | getElement(...) | | Test.java:1224:35:1224:50 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:1224:13:1224:51 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:1224:35:1224:50 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:1224:13:1224:51 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:1226:20:1226:22 | out : Set [] : String | Test.java:230:19:230:32 | it : Set [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:1226:9:1226:23 | getElement(...) | | Test.java:1231:35:1231:50 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:1231:13:1231:51 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:1231:35:1231:50 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:1231:13:1231:51 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:1233:20:1233:22 | out : Bag [] : String | Test.java:230:19:230:32 | it : Bag [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:1233:9:1233:23 | getElement(...) | | Test.java:1238:35:1238:50 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:1238:13:1238:51 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:1238:35:1238:50 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:1238:13:1238:51 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:1240:20:1240:22 | out : Bag [] : String | Test.java:230:19:230:32 | it : Bag [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:1240:9:1240:23 | getElement(...) | | Test.java:1245:41:1245:56 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:1245:19:1245:57 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:1245:41:1245:56 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:1245:19:1245:57 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:1247:20:1247:22 | out : SortedBag [] : String | Test.java:230:19:230:32 | it : SortedBag [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:1247:9:1247:23 | getElement(...) | | Test.java:1252:35:1252:50 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:1252:13:1252:51 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:1252:35:1252:50 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:1252:13:1252:51 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:1254:20:1254:22 | out : Bag [] : String | Test.java:230:19:230:32 | it : Bag [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:1254:9:1254:23 | getElement(...) | | Test.java:1259:41:1259:56 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:1259:19:1259:57 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:1259:41:1259:56 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:1259:19:1259:57 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:1261:20:1261:22 | out : SortedBag [] : String | Test.java:230:19:230:32 | it : SortedBag [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:1261:9:1261:23 | getElement(...) | | Test.java:1266:35:1266:50 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:1266:13:1266:51 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:1266:35:1266:50 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:1266:13:1266:51 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:1268:20:1268:22 | out : Bag [] : String | Test.java:230:19:230:32 | it : Bag [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:1268:9:1268:23 | getElement(...) | | Test.java:1273:41:1273:56 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:1273:19:1273:57 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:1273:41:1273:56 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:1273:19:1273:57 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:1275:20:1275:22 | out : SortedBag [] : String | Test.java:230:19:230:32 | it : SortedBag [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:1275:9:1275:23 | getElement(...) | | Test.java:1280:35:1280:50 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:1280:13:1280:51 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:1280:35:1280:50 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:1280:13:1280:51 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:1282:20:1282:22 | out : Bag [] : String | Test.java:230:19:230:32 | it : Bag [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:1282:9:1282:23 | getElement(...) | | Test.java:1287:41:1287:56 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:1287:19:1287:57 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:1287:41:1287:56 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:1287:19:1287:57 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:1289:20:1289:22 | out : SortedBag [] : String | Test.java:230:19:230:32 | it : SortedBag [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:1289:9:1289:23 | getElement(...) | | Test.java:1294:42:1294:57 | (...)... : String | Test.java:287:75:287:79 | key : String | Test.java:287:155:287:155 | m : TreeBidiMap [] : String | Test.java:1294:17:1294:58 | newTreeBidiMapWithMapKey(...) : TreeBidiMap [] : String | -| Test.java:1294:42:1294:57 | (...)... : String | Test.java:287:75:287:79 | key : String | Test.java:287:155:287:155 | m : TreeBidiMap [] : String | Test.java:1294:17:1294:58 | newTreeBidiMapWithMapKey(...) : TreeBidiMap [] : String | -| Test.java:1301:42:1301:57 | (...)... : String | Test.java:287:75:287:79 | key : String | Test.java:287:155:287:155 | m : TreeBidiMap [] : String | Test.java:1301:17:1301:58 | newTreeBidiMapWithMapKey(...) : TreeBidiMap [] : String | | Test.java:1301:42:1301:57 | (...)... : String | Test.java:287:75:287:79 | key : String | Test.java:287:155:287:155 | m : TreeBidiMap [] : String | Test.java:1301:17:1301:58 | newTreeBidiMapWithMapKey(...) : TreeBidiMap [] : String | | Test.java:1303:21:1303:23 | out : BidiMap [] : String | Test.java:232:20:232:31 | map : BidiMap [] : String | Test.java:232:43:232:55 | get(...) : String | Test.java:1303:9:1303:24 | getMapValue(...) | | Test.java:1308:44:1308:59 | (...)... : String | Test.java:306:77:306:83 | value : String | Test.java:306:161:306:161 | m : TreeBidiMap [] : String | Test.java:1308:17:1308:60 | newTreeBidiMapWithMapValue(...) : TreeBidiMap [] : String | -| Test.java:1308:44:1308:59 | (...)... : String | Test.java:306:77:306:83 | value : String | Test.java:306:161:306:161 | m : TreeBidiMap [] : String | Test.java:1308:17:1308:60 | newTreeBidiMapWithMapValue(...) : TreeBidiMap [] : String | | Test.java:1310:19:1310:21 | out : BidiMap [] : String | Test.java:228:18:228:29 | map : BidiMap [] : String | Test.java:228:41:228:70 | next(...) : String | Test.java:1310:9:1310:22 | getMapKey(...) | | Test.java:1315:42:1315:57 | (...)... : String | Test.java:287:75:287:79 | key : String | Test.java:287:155:287:155 | m : TreeBidiMap [] : String | Test.java:1315:17:1315:58 | newTreeBidiMapWithMapKey(...) : TreeBidiMap [] : String | -| Test.java:1315:42:1315:57 | (...)... : String | Test.java:287:75:287:79 | key : String | Test.java:287:155:287:155 | m : TreeBidiMap [] : String | Test.java:1315:17:1315:58 | newTreeBidiMapWithMapKey(...) : TreeBidiMap [] : String | | Test.java:1322:47:1322:62 | (...)... : String | Test.java:256:47:256:55 | element : String | Test.java:256:67:256:134 | new IteratorEnumeration(...) : IteratorEnumeration [] : String | Test.java:1322:21:1322:63 | newEnumerationWithElement(...) : IteratorEnumeration [] : String | | Test.java:1324:20:1324:22 | out : Collection [] : String | Test.java:230:19:230:32 | it : Collection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:1324:9:1324:23 | getElement(...) | | Test.java:1329:39:1329:54 | (...)... : String | Test.java:269:37:269:45 | element : String | Test.java:269:103:269:103 | v : Vector [] : String | Test.java:1329:18:1329:55 | newVectorWithElement(...) : Vector [] : String | @@ -18230,87 +18153,58 @@ subpaths | Test.java:1908:39:1908:54 | (...)... : String | Test.java:269:37:269:45 | element : String | Test.java:269:103:269:103 | v : Vector [] : String | Test.java:1908:18:1908:55 | newVectorWithElement(...) : Vector [] : String | | Test.java:1911:20:1911:22 | out : FluentIterable [] : String | Test.java:230:19:230:32 | it : FluentIterable [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:1911:9:1911:23 | getElement(...) | | Test.java:1916:40:1916:55 | (...)... : String | Test.java:279:47:279:51 | key : String | Test.java:279:131:279:131 | m : MultiValueMap [] : String | Test.java:1916:23:1916:56 | newMVMWithMapKey(...) : MultiValueMap [] : String | -| Test.java:1916:40:1916:55 | (...)... : String | Test.java:279:47:279:51 | key : String | Test.java:279:131:279:131 | m : MultiValueMap [] : String | Test.java:1916:23:1916:56 | newMVMWithMapKey(...) : MultiValueMap [] : String | -| Test.java:1916:40:1916:55 | (...)... : String | Test.java:279:47:279:51 | key : String | Test.java:279:131:279:131 | m : MultiValueMap [] : String | Test.java:1916:23:1916:56 | newMVMWithMapKey(...) : MultiValueMap [] : String | | Test.java:1918:28:1918:42 | getElement(...) : Entry [] : String | Test.java:238:27:238:50 | container : Entry [] : String | Test.java:238:62:238:79 | getKey(...) : String | Test.java:1918:9:1918:43 | getMapKeyFromEntry(...) | | Test.java:1918:39:1918:41 | out : Set [, ] : String | Test.java:230:19:230:32 | it : Set [, ] : String | Test.java:230:44:230:63 | next(...) : Object [] : String | Test.java:1918:28:1918:42 | getElement(...) : Entry [] : String | | Test.java:1923:39:1923:54 | (...)... : String | Test.java:288:49:288:58 | key : String | Test.java:288:134:288:134 | m : PatriciaTrie [] : String | Test.java:1923:13:1923:55 | newPatriciaTrieWithMapKey(...) : PatriciaTrie [] : String | -| Test.java:1923:39:1923:54 | (...)... : String | Test.java:288:49:288:58 | key : String | Test.java:288:134:288:134 | m : PatriciaTrie [] : String | Test.java:1923:13:1923:55 | newPatriciaTrieWithMapKey(...) : PatriciaTrie [] : String | | Test.java:1925:28:1925:42 | getElement(...) : Entry [] : String | Test.java:238:27:238:50 | container : Entry [] : String | Test.java:238:62:238:79 | getKey(...) : String | Test.java:1925:9:1925:43 | getMapKeyFromEntry(...) | | Test.java:1925:39:1925:41 | out : Set [, ] : String | Test.java:230:19:230:32 | it : Set [, ] : String | Test.java:230:44:230:63 | next(...) : Object [] : String | Test.java:1925:28:1925:42 | getElement(...) : Entry [] : String | | Test.java:1930:47:1930:62 | (...)... : String | Test.java:279:47:279:51 | key : String | Test.java:279:131:279:131 | m : MultiValueMap [] : String | Test.java:1930:30:1930:63 | newMVMWithMapKey(...) : MultiValueMap [] : String | -| Test.java:1930:47:1930:62 | (...)... : String | Test.java:279:47:279:51 | key : String | Test.java:279:131:279:131 | m : MultiValueMap [] : String | Test.java:1930:30:1930:63 | newMVMWithMapKey(...) : MultiValueMap [] : String | -| Test.java:1930:47:1930:62 | (...)... : String | Test.java:279:47:279:51 | key : String | Test.java:279:131:279:131 | m : MultiValueMap [] : String | Test.java:1930:30:1930:63 | newMVMWithMapKey(...) : MultiValueMap [] : String | | Test.java:1932:28:1932:42 | getElement(...) : Entry [] : String | Test.java:238:27:238:50 | container : Entry [] : String | Test.java:238:62:238:79 | getKey(...) : String | Test.java:1932:9:1932:43 | getMapKeyFromEntry(...) | | Test.java:1932:39:1932:41 | out : Set [, ] : String | Test.java:230:19:230:32 | it : Set [, ] : String | Test.java:230:44:230:63 | next(...) : Object [] : String | Test.java:1932:28:1932:42 | getElement(...) : Entry [] : String | | Test.java:1937:42:1937:57 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:1937:23:1937:58 | newMVMWithMapValue(...) : MultiValueMap [] : String | -| Test.java:1937:42:1937:57 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:1937:23:1937:58 | newMVMWithMapValue(...) : MultiValueMap [] : String | | Test.java:1939:30:1939:44 | getElement(...) : Entry [] : String | Test.java:244:29:244:52 | container : Entry [] : String | Test.java:244:64:244:83 | getValue(...) : String | Test.java:1939:9:1939:45 | getMapValueFromEntry(...) | | Test.java:1939:41:1939:43 | out : Set [, ] : String | Test.java:230:19:230:32 | it : Set [, ] : String | Test.java:230:44:230:63 | next(...) : Object [] : String | Test.java:1939:30:1939:44 | getElement(...) : Entry [] : String | | Test.java:1944:41:1944:56 | (...)... : String | Test.java:307:50:307:56 | value : String | Test.java:307:129:307:129 | m : PatriciaTrie [] : String | Test.java:1944:13:1944:57 | newPatriciaTrieWithMapValue(...) : PatriciaTrie [] : String | -| Test.java:1944:41:1944:56 | (...)... : String | Test.java:307:50:307:56 | value : String | Test.java:307:129:307:129 | m : PatriciaTrie [] : String | Test.java:1944:13:1944:57 | newPatriciaTrieWithMapValue(...) : PatriciaTrie [] : String | | Test.java:1946:30:1946:44 | getElement(...) : Entry [] : String | Test.java:244:29:244:52 | container : Entry [] : String | Test.java:244:64:244:83 | getValue(...) : String | Test.java:1946:9:1946:45 | getMapValueFromEntry(...) | | Test.java:1946:41:1946:43 | out : Set [, ] : String | Test.java:230:19:230:32 | it : Set [, ] : String | Test.java:230:44:230:63 | next(...) : Object [] : String | Test.java:1946:30:1946:44 | getElement(...) : Entry [] : String | | Test.java:1951:49:1951:64 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:1951:30:1951:65 | newMVMWithMapValue(...) : MultiValueMap [] : String | -| Test.java:1951:49:1951:64 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:1951:30:1951:65 | newMVMWithMapValue(...) : MultiValueMap [] : String | | Test.java:1953:30:1953:44 | getElement(...) : Entry [] : String | Test.java:244:29:244:52 | container : Entry [] : String | Test.java:244:64:244:83 | getValue(...) : String | Test.java:1953:9:1953:45 | getMapValueFromEntry(...) | | Test.java:1953:41:1953:43 | out : Set [, ] : String | Test.java:230:19:230:32 | it : Set [, ] : String | Test.java:230:44:230:63 | next(...) : Object [] : String | Test.java:1953:30:1953:44 | getElement(...) : Entry [] : String | | Test.java:1958:37:1958:52 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:1958:18:1958:53 | newMVMWithMapValue(...) : MultiValueMap [] : String | -| Test.java:1958:37:1958:52 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:1958:18:1958:53 | newMVMWithMapValue(...) : MultiValueMap [] : String | -| Test.java:1965:41:1965:56 | (...)... : String | Test.java:307:50:307:56 | value : String | Test.java:307:129:307:129 | m : PatriciaTrie [] : String | Test.java:1965:13:1965:57 | newPatriciaTrieWithMapValue(...) : PatriciaTrie [] : String | | Test.java:1965:41:1965:56 | (...)... : String | Test.java:307:50:307:56 | value : String | Test.java:307:129:307:129 | m : PatriciaTrie [] : String | Test.java:1965:13:1965:57 | newPatriciaTrieWithMapValue(...) : PatriciaTrie [] : String | | Test.java:1972:49:1972:64 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:1972:30:1972:65 | newMVMWithMapValue(...) : MultiValueMap [] : String | -| Test.java:1972:49:1972:64 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:1972:30:1972:65 | newMVMWithMapValue(...) : MultiValueMap [] : String | -| Test.java:1979:39:1979:54 | (...)... : String | Test.java:288:49:288:58 | key : String | Test.java:288:134:288:134 | m : PatriciaTrie [] : String | Test.java:1979:13:1979:55 | newPatriciaTrieWithMapKey(...) : PatriciaTrie [] : String | | Test.java:1979:39:1979:54 | (...)... : String | Test.java:288:49:288:58 | key : String | Test.java:288:134:288:134 | m : PatriciaTrie [] : String | Test.java:1979:13:1979:55 | newPatriciaTrieWithMapKey(...) : PatriciaTrie [] : String | | Test.java:1981:20:1981:22 | out : Set [] : String | Test.java:230:19:230:32 | it : Set [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:1981:9:1981:23 | getElement(...) | | Test.java:1986:47:1986:62 | (...)... : String | Test.java:279:47:279:51 | key : String | Test.java:279:131:279:131 | m : MultiValueMap [] : String | Test.java:1986:30:1986:63 | newMVMWithMapKey(...) : MultiValueMap [] : String | -| Test.java:1986:47:1986:62 | (...)... : String | Test.java:279:47:279:51 | key : String | Test.java:279:131:279:131 | m : MultiValueMap [] : String | Test.java:1986:30:1986:63 | newMVMWithMapKey(...) : MultiValueMap [] : String | -| Test.java:1986:47:1986:62 | (...)... : String | Test.java:279:47:279:51 | key : String | Test.java:279:131:279:131 | m : MultiValueMap [] : String | Test.java:1986:30:1986:63 | newMVMWithMapKey(...) : MultiValueMap [] : String | | Test.java:1988:20:1988:22 | out : Set [] : String | Test.java:230:19:230:32 | it : Set [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:1988:9:1988:23 | getElement(...) | | Test.java:1993:37:1993:52 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:1993:18:1993:53 | newMVMWithMapValue(...) : MultiValueMap [] : String | -| Test.java:1993:37:1993:52 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:1993:18:1993:53 | newMVMWithMapValue(...) : MultiValueMap [] : String | -| Test.java:2000:41:2000:56 | (...)... : String | Test.java:307:50:307:56 | value : String | Test.java:307:129:307:129 | m : PatriciaTrie [] : String | Test.java:2000:13:2000:57 | newPatriciaTrieWithMapValue(...) : PatriciaTrie [] : String | | Test.java:2000:41:2000:56 | (...)... : String | Test.java:307:50:307:56 | value : String | Test.java:307:129:307:129 | m : PatriciaTrie [] : String | Test.java:2000:13:2000:57 | newPatriciaTrieWithMapValue(...) : PatriciaTrie [] : String | | Test.java:2007:49:2007:64 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:2007:30:2007:65 | newMVMWithMapValue(...) : MultiValueMap [] : String | -| Test.java:2007:49:2007:64 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:2007:30:2007:65 | newMVMWithMapValue(...) : MultiValueMap [] : String | -| Test.java:2014:44:2014:59 | (...)... : String | Test.java:306:77:306:83 | value : String | Test.java:306:161:306:161 | m : TreeBidiMap [] : String | Test.java:2014:17:2014:60 | newTreeBidiMapWithMapValue(...) : TreeBidiMap [] : String | | Test.java:2014:44:2014:59 | (...)... : String | Test.java:306:77:306:83 | value : String | Test.java:306:161:306:161 | m : TreeBidiMap [] : String | Test.java:2014:17:2014:60 | newTreeBidiMapWithMapValue(...) : TreeBidiMap [] : String | | Test.java:2016:20:2016:22 | out : Set [] : String | Test.java:230:19:230:32 | it : Set [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:2016:9:2016:23 | getElement(...) | | Test.java:2021:42:2021:57 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [, ] : String | Test.java:2021:23:2021:58 | newMVMWithMapValue(...) : MultiValueMap [, ] : String | | Test.java:2021:42:2021:57 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:2021:23:2021:58 | newMVMWithMapValue(...) : MultiValueMap [] : String | -| Test.java:2021:42:2021:57 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:2021:23:2021:58 | newMVMWithMapValue(...) : MultiValueMap [] : String | | Test.java:2023:20:2023:22 | out : Collection [] : Object | Test.java:230:19:230:32 | it : Collection [] : Object | Test.java:230:44:230:63 | next(...) : Object | Test.java:2023:9:2023:23 | getElement(...) | | Test.java:2023:20:2023:22 | out : Collection [] : String | Test.java:230:19:230:32 | it : Collection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:2023:9:2023:23 | getElement(...) | | Test.java:2028:37:2028:52 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [, ] : String | Test.java:2028:18:2028:53 | newMVMWithMapValue(...) : MultiValueMap [, ] : String | | Test.java:2028:37:2028:52 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:2028:18:2028:53 | newMVMWithMapValue(...) : MultiValueMap [] : String | -| Test.java:2028:37:2028:52 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:2028:18:2028:53 | newMVMWithMapValue(...) : MultiValueMap [] : String | | Test.java:2030:20:2030:22 | out : Collection [] : Object | Test.java:230:19:230:32 | it : Collection [] : Object | Test.java:230:44:230:63 | next(...) : Object | Test.java:2030:9:2030:23 | getElement(...) | | Test.java:2030:20:2030:22 | out : Collection [] : String | Test.java:230:19:230:32 | it : Collection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:2030:9:2030:23 | getElement(...) | | Test.java:2035:41:2035:56 | (...)... : String | Test.java:307:50:307:56 | value : String | Test.java:307:129:307:129 | m : PatriciaTrie [] : String | Test.java:2035:13:2035:57 | newPatriciaTrieWithMapValue(...) : PatriciaTrie [] : String | -| Test.java:2035:41:2035:56 | (...)... : String | Test.java:307:50:307:56 | value : String | Test.java:307:129:307:129 | m : PatriciaTrie [] : String | Test.java:2035:13:2035:57 | newPatriciaTrieWithMapValue(...) : PatriciaTrie [] : String | | Test.java:2037:20:2037:22 | out : Collection [] : String | Test.java:230:19:230:32 | it : Collection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:2037:9:2037:23 | getElement(...) | | Test.java:2042:49:2042:64 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:2042:30:2042:65 | newMVMWithMapValue(...) : MultiValueMap [] : String | -| Test.java:2042:49:2042:64 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:2042:30:2042:65 | newMVMWithMapValue(...) : MultiValueMap [] : String | | Test.java:2044:20:2044:22 | out : Collection [] : String | Test.java:230:19:230:32 | it : Collection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:2044:9:2044:23 | getElement(...) | | Test.java:2049:45:2049:60 | (...)... : String | Test.java:287:75:287:79 | key : String | Test.java:287:155:287:155 | m : TreeBidiMap [] : String | Test.java:2049:20:2049:61 | newTreeBidiMapWithMapKey(...) : TreeBidiMap [] : String | -| Test.java:2049:45:2049:60 | (...)... : String | Test.java:287:75:287:79 | key : String | Test.java:287:155:287:155 | m : TreeBidiMap [] : String | Test.java:2049:20:2049:61 | newTreeBidiMapWithMapKey(...) : TreeBidiMap [] : String | | Test.java:2051:20:2051:22 | out : OrderedMapIterator [] : String | Test.java:231:19:231:32 | it : OrderedMapIterator [] : String | Test.java:231:44:231:52 | next(...) : String | Test.java:2051:9:2051:23 | getElement(...) | | Test.java:2056:44:2056:59 | (...)... : String | Test.java:275:49:275:53 | key : String | Test.java:275:125:275:125 | m : HashedMap [] : String | Test.java:2056:21:2056:60 | newHashedMapWithMapKey(...) : HashedMap [] : String | -| Test.java:2056:44:2056:59 | (...)... : String | Test.java:275:49:275:53 | key : String | Test.java:275:125:275:125 | m : HashedMap [] : String | Test.java:2056:21:2056:60 | newHashedMapWithMapKey(...) : HashedMap [] : String | | Test.java:2058:20:2058:22 | out : MapIterator [] : String | Test.java:231:19:231:32 | it : MapIterator [] : String | Test.java:231:44:231:52 | next(...) : String | Test.java:2058:9:2058:23 | getElement(...) | | Test.java:2063:46:2063:61 | (...)... : String | Test.java:279:47:279:51 | key : String | Test.java:279:131:279:131 | m : MultiValueMap [] : String | Test.java:2063:29:2063:62 | newMVMWithMapKey(...) : MultiValueMap [] : String | -| Test.java:2063:46:2063:61 | (...)... : String | Test.java:279:47:279:51 | key : String | Test.java:279:131:279:131 | m : MultiValueMap [] : String | Test.java:2063:29:2063:62 | newMVMWithMapKey(...) : MultiValueMap [] : String | -| Test.java:2063:46:2063:61 | (...)... : String | Test.java:279:47:279:51 | key : String | Test.java:279:131:279:131 | m : MultiValueMap [] : String | Test.java:2063:29:2063:62 | newMVMWithMapKey(...) : MultiValueMap [] : String | | Test.java:2065:20:2065:22 | out : MapIterator [] : String | Test.java:231:19:231:32 | it : MapIterator [] : String | Test.java:231:44:231:52 | next(...) : String | Test.java:2065:9:2065:23 | getElement(...) | | Test.java:2070:47:2070:62 | (...)... : String | Test.java:306:77:306:83 | value : String | Test.java:306:161:306:161 | m : TreeBidiMap [] : String | Test.java:2070:20:2070:63 | newTreeBidiMapWithMapValue(...) : TreeBidiMap [] : String | -| Test.java:2070:47:2070:62 | (...)... : String | Test.java:306:77:306:83 | value : String | Test.java:306:161:306:161 | m : TreeBidiMap [] : String | Test.java:2070:20:2070:63 | newTreeBidiMapWithMapValue(...) : TreeBidiMap [] : String | | Test.java:2072:21:2072:23 | out : OrderedMapIterator [] : String | Test.java:246:20:246:47 | mapIterator : OrderedMapIterator [] : String | Test.java:246:59:246:80 | getValue(...) : String | Test.java:2072:9:2072:24 | getMapValue(...) | | Test.java:2077:46:2077:61 | (...)... : String | Test.java:293:51:293:57 | value : String | Test.java:293:131:293:131 | m : HashedMap [] : String | Test.java:2077:21:2077:62 | newHashedMapWithMapValue(...) : HashedMap [] : String | -| Test.java:2077:46:2077:61 | (...)... : String | Test.java:293:51:293:57 | value : String | Test.java:293:131:293:131 | m : HashedMap [] : String | Test.java:2077:21:2077:62 | newHashedMapWithMapValue(...) : HashedMap [] : String | | Test.java:2079:21:2079:23 | out : MapIterator [] : String | Test.java:246:20:246:47 | mapIterator : MapIterator [] : String | Test.java:246:59:246:80 | getValue(...) : String | Test.java:2079:9:2079:24 | getMapValue(...) | | Test.java:2084:48:2084:63 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:2084:29:2084:64 | newMVMWithMapValue(...) : MultiValueMap [] : String | -| Test.java:2084:48:2084:63 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:2084:29:2084:64 | newMVMWithMapValue(...) : MultiValueMap [] : String | | Test.java:2086:21:2086:23 | out : MapIterator [] : String | Test.java:246:20:246:47 | mapIterator : MapIterator [] : String | Test.java:246:59:246:80 | getValue(...) : String | Test.java:2086:9:2086:24 | getMapValue(...) | | Test.java:2091:39:2091:54 | (...)... : String | Test.java:269:37:269:45 | element : String | Test.java:269:103:269:103 | v : Vector [] : String | Test.java:2091:18:2091:55 | newVectorWithElement(...) : Vector [] : String | | Test.java:2093:20:2093:22 | out : Iterable [] : String | Test.java:230:19:230:32 | it : Iterable [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:2093:9:2093:23 | getElement(...) | @@ -18473,10 +18367,8 @@ subpaths | Test.java:2721:49:2721:64 | (...)... : String | Test.java:259:49:259:57 | element : String | Test.java:259:69:259:112 | listIterator(...) : ListIterator [] : String | Test.java:2721:22:2721:65 | newListIteratorWithElement(...) : ListIterator [] : String | | Test.java:2723:20:2723:22 | out : ListIterator [] : String | Test.java:231:19:231:32 | it : ListIterator [] : String | Test.java:231:44:231:52 | next(...) : String | Test.java:2723:9:2723:23 | getElement(...) | | Test.java:2728:39:2728:54 | (...)... : String | Test.java:283:53:283:57 | key : String | Test.java:283:129:283:143 | mapIterator(...) : OrderedMapIterator [] : String | Test.java:2728:21:2728:55 | newOMIWithElement(...) : OrderedMapIterator [] : String | -| Test.java:2728:39:2728:54 | (...)... : String | Test.java:283:53:283:57 | key : String | Test.java:283:129:283:143 | mapIterator(...) : OrderedMapIterator [] : String | Test.java:2728:21:2728:55 | newOMIWithElement(...) : OrderedMapIterator [] : String | | Test.java:2730:20:2730:22 | out : MapIterator [] : String | Test.java:231:19:231:32 | it : MapIterator [] : String | Test.java:231:44:231:52 | next(...) : String | Test.java:2730:9:2730:23 | getElement(...) | | Test.java:2735:40:2735:55 | (...)... : String | Test.java:302:54:302:60 | value : String | Test.java:302:134:302:148 | mapIterator(...) : OrderedMapIterator [] : String | Test.java:2735:21:2735:56 | newOMIWithMapValue(...) : OrderedMapIterator [] : String | -| Test.java:2735:40:2735:55 | (...)... : String | Test.java:302:54:302:60 | value : String | Test.java:302:134:302:148 | mapIterator(...) : OrderedMapIterator [] : String | Test.java:2735:21:2735:56 | newOMIWithMapValue(...) : OrderedMapIterator [] : String | | Test.java:2737:21:2737:23 | out : MapIterator [] : String | Test.java:246:20:246:47 | mapIterator : MapIterator [] : String | Test.java:246:59:246:80 | getValue(...) : String | Test.java:2737:9:2737:24 | getMapValue(...) | | Test.java:2742:45:2742:60 | (...)... : String | Test.java:259:49:259:57 | element : String | Test.java:259:69:259:112 | listIterator(...) : ListIterator [] : String | Test.java:2742:18:2742:61 | newListIteratorWithElement(...) : ListIterator [] : String | | Test.java:2744:20:2744:22 | out : ZippingIterator [] : String | Test.java:231:19:231:32 | it : ZippingIterator [] : String | Test.java:231:44:231:52 | next(...) : String | Test.java:2744:9:2744:23 | getElement(...) | @@ -18538,15 +18430,11 @@ subpaths | Test.java:2973:35:2973:50 | (...)... : String | Test.java:269:37:269:45 | element : String | Test.java:269:103:269:103 | v : Vector [] : String | Test.java:2973:14:2973:51 | newVectorWithElement(...) : Vector [] : String | | Test.java:2975:20:2975:22 | out : List [] : String | Test.java:230:19:230:32 | it : List [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:2975:9:2975:23 | getElement(...) | | Test.java:2980:39:2980:54 | (...)... : String | Test.java:283:53:283:57 | key : String | Test.java:283:129:283:143 | mapIterator(...) : OrderedMapIterator [] : String | Test.java:2980:21:2980:55 | newOMIWithElement(...) : OrderedMapIterator [] : String | -| Test.java:2980:39:2980:54 | (...)... : String | Test.java:283:53:283:57 | key : String | Test.java:283:129:283:143 | mapIterator(...) : OrderedMapIterator [] : String | Test.java:2980:21:2980:55 | newOMIWithElement(...) : OrderedMapIterator [] : String | -| Test.java:2987:40:2987:55 | (...)... : String | Test.java:302:54:302:60 | value : String | Test.java:302:134:302:148 | mapIterator(...) : OrderedMapIterator [] : String | Test.java:2987:21:2987:56 | newOMIWithMapValue(...) : OrderedMapIterator [] : String | | Test.java:2987:40:2987:55 | (...)... : String | Test.java:302:54:302:60 | value : String | Test.java:302:134:302:148 | mapIterator(...) : OrderedMapIterator [] : String | Test.java:2987:21:2987:56 | newOMIWithMapValue(...) : OrderedMapIterator [] : String | | Test.java:2996:21:2996:23 | out : MapIterator [] : Object | Test.java:246:20:246:47 | mapIterator : MapIterator [] : Object | Test.java:246:59:246:80 | getValue(...) : Object | Test.java:2996:9:2996:24 | getMapValue(...) | | Test.java:3001:40:3001:55 | (...)... : String | Test.java:302:54:302:60 | value : String | Test.java:302:134:302:148 | mapIterator(...) : OrderedMapIterator [] : String | Test.java:3001:21:3001:56 | newOMIWithMapValue(...) : OrderedMapIterator [] : String | -| Test.java:3001:40:3001:55 | (...)... : String | Test.java:302:54:302:60 | value : String | Test.java:302:134:302:148 | mapIterator(...) : OrderedMapIterator [] : String | Test.java:3001:21:3001:56 | newOMIWithMapValue(...) : OrderedMapIterator [] : String | | Test.java:3008:37:3008:52 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [, ] : String | Test.java:3008:18:3008:53 | newMVMWithMapValue(...) : MultiValueMap [, ] : String | | Test.java:3008:37:3008:52 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:3008:18:3008:53 | newMVMWithMapValue(...) : MultiValueMap [] : String | -| Test.java:3008:37:3008:52 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:3008:18:3008:53 | newMVMWithMapValue(...) : MultiValueMap [] : String | | Test.java:3010:20:3010:22 | out : Collection [] : Object | Test.java:230:19:230:32 | it : Collection [] : Object | Test.java:230:44:230:63 | next(...) : Object | Test.java:3010:9:3010:23 | getElement(...) | | Test.java:3010:20:3010:22 | out : Collection [] : String | Test.java:230:19:230:32 | it : Collection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:3010:9:3010:23 | getElement(...) | | Test.java:3017:19:3017:21 | out : MultiValueMap [] : Object | Test.java:228:18:228:29 | map : MultiValueMap [] : Object | Test.java:228:41:228:70 | next(...) : Object | Test.java:3017:9:3017:22 | getMapKey(...) | @@ -18561,12 +18449,10 @@ subpaths | Test.java:3038:44:3038:46 | out : MultiMap [] : Object | Test.java:232:20:232:31 | map : MultiMap [] : Object | Test.java:232:43:232:55 | get(...) : Object | Test.java:3038:32:3038:47 | getMapValue(...) : Object | | Test.java:3043:42:3043:57 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [, ] : String | Test.java:3043:23:3043:58 | newMVMWithMapValue(...) : MultiValueMap [, ] : String | | Test.java:3043:42:3043:57 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:3043:23:3043:58 | newMVMWithMapValue(...) : MultiValueMap [] : String | -| Test.java:3043:42:3043:57 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:3043:23:3043:58 | newMVMWithMapValue(...) : MultiValueMap [] : String | | Test.java:3045:20:3045:22 | out : Collection [] : Object | Test.java:230:19:230:32 | it : Collection [] : Object | Test.java:230:44:230:63 | next(...) : Object | Test.java:3045:9:3045:23 | getElement(...) | | Test.java:3045:20:3045:22 | out : Collection [] : String | Test.java:230:19:230:32 | it : Collection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:3045:9:3045:23 | getElement(...) | | Test.java:3050:37:3050:52 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [, ] : String | Test.java:3050:18:3050:53 | newMVMWithMapValue(...) : MultiValueMap [, ] : String | | Test.java:3050:37:3050:52 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:3050:18:3050:53 | newMVMWithMapValue(...) : MultiValueMap [] : String | -| Test.java:3050:37:3050:52 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:3050:18:3050:53 | newMVMWithMapValue(...) : MultiValueMap [] : String | | Test.java:3052:20:3052:22 | out : Collection [] : Object | Test.java:230:19:230:32 | it : Collection [] : Object | Test.java:230:44:230:63 | next(...) : Object | Test.java:3052:9:3052:23 | getElement(...) | | Test.java:3052:20:3052:22 | out : Collection [] : String | Test.java:230:19:230:32 | it : Collection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:3052:9:3052:23 | getElement(...) | | Test.java:3064:43:3064:58 | (...)... : String | Test.java:272:58:272:62 | key : String | Test.java:272:160:272:160 | m : ArrayListValuedHashMap [] : String | Test.java:3064:24:3064:59 | newALVHMWithMapKey(...) : ArrayListValuedHashMap [] : String | @@ -18594,24 +18480,18 @@ subpaths | Test.java:3129:20:3129:35 | getMapValue(...) : Collection [] : String | Test.java:230:19:230:32 | it : Collection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:3129:9:3129:36 | getElement(...) | | Test.java:3129:32:3129:34 | out : MultiValuedMap [, ] : String | Test.java:247:32:247:60 | container : MultiValuedMap [, ] : String | Test.java:247:72:247:90 | get(...) : Collection [] : String | Test.java:3129:20:3129:35 | getMapValue(...) : Collection [] : String | | Test.java:3134:52:3134:67 | (...)... : String | Test.java:262:52:262:60 | element : String | Test.java:262:72:262:125 | getElement(...) : Entry [] : String | Test.java:3134:24:3134:68 | newMultiSetEntryWithElement(...) : Entry [] : String | -| Test.java:3134:52:3134:67 | (...)... : String | Test.java:262:52:262:60 | element : String | Test.java:262:72:262:125 | getElement(...) : Entry [] : String | Test.java:3134:24:3134:68 | newMultiSetEntryWithElement(...) : Entry [] : String | | Test.java:3143:20:3143:22 | out : MultiSet [] : Object | Test.java:230:19:230:32 | it : MultiSet [] : Object | Test.java:230:44:230:63 | next(...) : Object | Test.java:3143:9:3143:23 | getElement(...) | | Test.java:3150:20:3150:22 | out : MultiSet [] : Object | Test.java:230:19:230:32 | it : MultiSet [] : Object | Test.java:230:44:230:63 | next(...) : Object | Test.java:3150:9:3150:23 | getElement(...) | | Test.java:3155:41:3155:56 | (...)... : String | Test.java:263:41:263:49 | element : String | Test.java:263:119:263:119 | h : HashMultiSet [] : String | Test.java:3155:18:3155:57 | newMultiSetWithElement(...) : HashMultiSet [] : String | -| Test.java:3155:41:3155:56 | (...)... : String | Test.java:263:41:263:49 | element : String | Test.java:263:119:263:119 | h : HashMultiSet [] : String | Test.java:3155:18:3155:57 | newMultiSetWithElement(...) : HashMultiSet [] : String | | Test.java:3157:20:3157:34 | getElement(...) : Entry [] : String | Test.java:235:19:235:45 | container : Entry [] : String | Test.java:235:57:235:78 | getElement(...) : String | Test.java:3157:9:3157:35 | getElement(...) | | Test.java:3157:31:3157:33 | out : Set [, ] : String | Test.java:230:19:230:32 | it : Set [, ] : String | Test.java:230:44:230:63 | next(...) : Object [] : String | Test.java:3157:20:3157:34 | getElement(...) : Entry [] : String | | Test.java:3162:41:3162:56 | (...)... : String | Test.java:263:41:263:49 | element : String | Test.java:263:119:263:119 | h : HashMultiSet [] : String | Test.java:3162:18:3162:57 | newMultiSetWithElement(...) : HashMultiSet [] : String | -| Test.java:3162:41:3162:56 | (...)... : String | Test.java:263:41:263:49 | element : String | Test.java:263:119:263:119 | h : HashMultiSet [] : String | Test.java:3162:18:3162:57 | newMultiSetWithElement(...) : HashMultiSet [] : String | | Test.java:3164:20:3164:22 | out : Set [] : String | Test.java:230:19:230:32 | it : Set [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:3164:9:3164:23 | getElement(...) | | Test.java:3169:41:3169:56 | (...)... : String | Test.java:263:41:263:49 | element : String | Test.java:263:119:263:119 | h : HashMultiSet [] : String | Test.java:3169:18:3169:57 | newMultiSetWithElement(...) : HashMultiSet [] : String | -| Test.java:3169:41:3169:56 | (...)... : String | Test.java:263:41:263:49 | element : String | Test.java:263:119:263:119 | h : HashMultiSet [] : String | Test.java:3169:18:3169:57 | newMultiSetWithElement(...) : HashMultiSet [] : String | | Test.java:3171:20:3171:22 | out : MultiSet [] : String | Test.java:230:19:230:32 | it : MultiSet [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:3171:9:3171:23 | getElement(...) | | Test.java:3176:41:3176:56 | (...)... : String | Test.java:263:41:263:49 | element : String | Test.java:263:119:263:119 | h : HashMultiSet [] : String | Test.java:3176:18:3176:57 | newMultiSetWithElement(...) : HashMultiSet [] : String | -| Test.java:3176:41:3176:56 | (...)... : String | Test.java:263:41:263:49 | element : String | Test.java:263:119:263:119 | h : HashMultiSet [] : String | Test.java:3176:18:3176:57 | newMultiSetWithElement(...) : HashMultiSet [] : String | | Test.java:3178:20:3178:22 | out : MultiSet [] : String | Test.java:230:19:230:32 | it : MultiSet [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:3178:9:3178:23 | getElement(...) | | Test.java:3183:41:3183:56 | (...)... : String | Test.java:263:41:263:49 | element : String | Test.java:263:119:263:119 | h : HashMultiSet [] : String | Test.java:3183:18:3183:57 | newMultiSetWithElement(...) : HashMultiSet [] : String | -| Test.java:3183:41:3183:56 | (...)... : String | Test.java:263:41:263:49 | element : String | Test.java:263:119:263:119 | h : HashMultiSet [] : String | Test.java:3183:18:3183:57 | newMultiSetWithElement(...) : HashMultiSet [] : String | | Test.java:3185:20:3185:22 | out : MultiSet [] : String | Test.java:230:19:230:32 | it : MultiSet [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:3185:9:3185:23 | getElement(...) | | Test.java:3190:45:3190:60 | (...)... : String | Test.java:290:60:290:66 | value : String | Test.java:290:166:290:166 | m : ArrayListValuedHashMap [, ] : String | Test.java:3190:24:3190:61 | newALVHMWithMapValue(...) : ArrayListValuedHashMap [, ] : String | | Test.java:3192:20:3192:47 | (...)... : Collection [] : String | Test.java:230:19:230:32 | it : Collection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:3192:9:3192:48 | getElement(...) | @@ -18658,16 +18538,10 @@ subpaths | Test.java:3330:45:3330:60 | (...)... : String | Test.java:290:60:290:66 | value : String | Test.java:290:166:290:166 | m : ArrayListValuedHashMap [, ] : String | Test.java:3330:24:3330:61 | newALVHMWithMapValue(...) : ArrayListValuedHashMap [, ] : String | | Test.java:3332:20:3332:22 | out : Collection [] : String | Test.java:230:19:230:32 | it : Collection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:3332:9:3332:23 | getElement(...) | | Test.java:3337:46:3337:61 | (...)... : String | Test.java:283:53:283:57 | key : String | Test.java:283:129:283:143 | mapIterator(...) : OrderedMapIterator [] : String | Test.java:3337:28:3337:62 | newOMIWithElement(...) : OrderedMapIterator [] : String | -| Test.java:3337:46:3337:61 | (...)... : String | Test.java:283:53:283:57 | key : String | Test.java:283:129:283:143 | mapIterator(...) : OrderedMapIterator [] : String | Test.java:3337:28:3337:62 | newOMIWithElement(...) : OrderedMapIterator [] : String | -| Test.java:3344:43:3344:58 | (...)... : String | Test.java:283:53:283:57 | key : String | Test.java:283:129:283:143 | mapIterator(...) : OrderedMapIterator [] : String | Test.java:3344:25:3344:59 | newOMIWithElement(...) : OrderedMapIterator [] : String | | Test.java:3344:43:3344:58 | (...)... : String | Test.java:283:53:283:57 | key : String | Test.java:283:129:283:143 | mapIterator(...) : OrderedMapIterator [] : String | Test.java:3344:25:3344:59 | newOMIWithElement(...) : OrderedMapIterator [] : String | | Test.java:3351:45:3351:60 | (...)... : String | Test.java:287:75:287:79 | key : String | Test.java:287:155:287:155 | m : TreeBidiMap [] : String | Test.java:3351:20:3351:61 | newTreeBidiMapWithMapKey(...) : TreeBidiMap [] : String | -| Test.java:3351:45:3351:60 | (...)... : String | Test.java:287:75:287:79 | key : String | Test.java:287:155:287:155 | m : TreeBidiMap [] : String | Test.java:3351:20:3351:61 | newTreeBidiMapWithMapKey(...) : TreeBidiMap [] : String | -| Test.java:3358:45:3358:60 | (...)... : String | Test.java:287:75:287:79 | key : String | Test.java:287:155:287:155 | m : TreeBidiMap [] : String | Test.java:3358:20:3358:61 | newTreeBidiMapWithMapKey(...) : TreeBidiMap [] : String | | Test.java:3358:45:3358:60 | (...)... : String | Test.java:287:75:287:79 | key : String | Test.java:287:155:287:155 | m : TreeBidiMap [] : String | Test.java:3358:20:3358:61 | newTreeBidiMapWithMapKey(...) : TreeBidiMap [] : String | | Test.java:3365:45:3365:60 | (...)... : String | Test.java:287:75:287:79 | key : String | Test.java:287:155:287:155 | m : TreeBidiMap [] : String | Test.java:3365:20:3365:61 | newTreeBidiMapWithMapKey(...) : TreeBidiMap [] : String | -| Test.java:3365:45:3365:60 | (...)... : String | Test.java:287:75:287:79 | key : String | Test.java:287:155:287:155 | m : TreeBidiMap [] : String | Test.java:3365:20:3365:61 | newTreeBidiMapWithMapKey(...) : TreeBidiMap [] : String | -| Test.java:3372:45:3372:60 | (...)... : String | Test.java:287:75:287:79 | key : String | Test.java:287:155:287:155 | m : TreeBidiMap [] : String | Test.java:3372:20:3372:61 | newTreeBidiMapWithMapKey(...) : TreeBidiMap [] : String | | Test.java:3372:45:3372:60 | (...)... : String | Test.java:287:75:287:79 | key : String | Test.java:287:155:287:155 | m : TreeBidiMap [] : String | Test.java:3372:20:3372:61 | newTreeBidiMapWithMapKey(...) : TreeBidiMap [] : String | | Test.java:3381:26:3381:28 | out : Put [] : Object | Test.java:242:27:242:44 | container : Put [] : Object | Test.java:242:56:242:85 | getMapKey(...) : Object | Test.java:3381:9:3381:29 | getMapKeyFromPut(...) | | Test.java:3388:19:3388:21 | out : MultiValueMap [] : Object | Test.java:228:18:228:29 | map : MultiValueMap [] : Object | Test.java:228:41:228:70 | next(...) : Object | Test.java:3388:9:3388:22 | getMapKey(...) | @@ -18680,14 +18554,9 @@ subpaths | Test.java:3437:21:3437:23 | out : BidiMap [] : Object | Test.java:232:20:232:31 | map : BidiMap [] : Object | Test.java:232:43:232:55 | get(...) : Object | Test.java:3437:9:3437:24 | getMapValue(...) | | Test.java:3444:21:3444:23 | out : AbstractMapDecorator [] : Object | Test.java:232:20:232:31 | map : AbstractMapDecorator [] : Object | Test.java:232:43:232:55 | get(...) : Object | Test.java:3444:9:3444:24 | getMapValue(...) | | Test.java:3449:38:3449:53 | (...)... : String | Test.java:293:51:293:57 | value : String | Test.java:293:131:293:131 | m : HashedMap [] : String | Test.java:3449:13:3449:54 | newHashedMapWithMapValue(...) : HashedMap [] : String | -| Test.java:3449:38:3449:53 | (...)... : String | Test.java:293:51:293:57 | value : String | Test.java:293:131:293:131 | m : HashedMap [] : String | Test.java:3449:13:3449:54 | newHashedMapWithMapValue(...) : HashedMap [] : String | -| Test.java:3456:42:3456:57 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:3456:23:3456:58 | newMVMWithMapValue(...) : MultiValueMap [] : String | | Test.java:3456:42:3456:57 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:3456:23:3456:58 | newMVMWithMapValue(...) : MultiValueMap [] : String | | Test.java:3463:37:3463:52 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:3463:18:3463:53 | newMVMWithMapValue(...) : MultiValueMap [] : String | -| Test.java:3463:37:3463:52 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:3463:18:3463:53 | newMVMWithMapValue(...) : MultiValueMap [] : String | | Test.java:3470:44:3470:59 | (...)... : String | Test.java:306:77:306:83 | value : String | Test.java:306:161:306:161 | m : TreeBidiMap [] : String | Test.java:3470:17:3470:60 | newTreeBidiMapWithMapValue(...) : TreeBidiMap [] : String | -| Test.java:3470:44:3470:59 | (...)... : String | Test.java:306:77:306:83 | value : String | Test.java:306:161:306:161 | m : TreeBidiMap [] : String | Test.java:3470:17:3470:60 | newTreeBidiMapWithMapValue(...) : TreeBidiMap [] : String | -| Test.java:3477:49:3477:64 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:3477:30:3477:65 | newMVMWithMapValue(...) : MultiValueMap [] : String | | Test.java:3477:49:3477:64 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:3477:30:3477:65 | newMVMWithMapValue(...) : MultiValueMap [] : String | | Test.java:3484:34:3484:49 | (...)... : String | Test.java:285:47:285:51 | key : String | Test.java:285:121:285:121 | m : TreeMap [] : String | Test.java:3484:13:3484:50 | newTreeMapWithMapKey(...) : TreeMap [] : String | | Test.java:3486:26:3486:28 | out : Put [] : String | Test.java:242:27:242:44 | container : Put [] : String | Test.java:242:56:242:85 | getMapKey(...) : String | Test.java:3486:9:3486:29 | getMapKeyFromPut(...) | @@ -18757,35 +18626,24 @@ subpaths | Test.java:3722:41:3722:56 | (...)... : String | Test.java:268:39:268:47 | element : String | Test.java:268:107:268:107 | h : TreeSet [] : String | Test.java:3722:19:3722:57 | newTreeSetWithElement(...) : TreeSet [] : String | | Test.java:3724:20:3724:22 | out : SortedSet [] : String | Test.java:230:19:230:32 | it : SortedSet [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:3724:9:3724:23 | getElement(...) | | Test.java:3729:41:3729:56 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3729:19:3729:57 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:3729:41:3729:56 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3729:19:3729:57 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:3736:41:3736:56 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3736:19:3736:57 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:3736:41:3736:56 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3736:19:3736:57 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:3743:36:3743:51 | (...)... : String | Test.java:275:49:275:53 | key : String | Test.java:275:125:275:125 | m : HashedMap [] : String | Test.java:3743:13:3743:52 | newHashedMapWithMapKey(...) : HashedMap [] : String | | Test.java:3743:36:3743:51 | (...)... : String | Test.java:275:49:275:53 | key : String | Test.java:275:125:275:125 | m : HashedMap [] : String | Test.java:3743:13:3743:52 | newHashedMapWithMapKey(...) : HashedMap [] : String | | Test.java:3745:19:3745:21 | out : IterableMap [] : String | Test.java:228:18:228:29 | map : IterableMap [] : String | Test.java:228:41:228:70 | next(...) : String | Test.java:3745:9:3745:22 | getMapKey(...) | | Test.java:3750:38:3750:53 | (...)... : String | Test.java:293:51:293:57 | value : String | Test.java:293:131:293:131 | m : HashedMap [] : String | Test.java:3750:13:3750:54 | newHashedMapWithMapValue(...) : HashedMap [] : String | -| Test.java:3750:38:3750:53 | (...)... : String | Test.java:293:51:293:57 | value : String | Test.java:293:131:293:131 | m : HashedMap [] : String | Test.java:3750:13:3750:54 | newHashedMapWithMapValue(...) : HashedMap [] : String | | Test.java:3752:21:3752:23 | out : IterableMap [] : String | Test.java:232:20:232:31 | map : IterableMap [] : String | Test.java:232:43:232:55 | get(...) : String | Test.java:3752:9:3752:24 | getMapValue(...) | | Test.java:3757:36:3757:51 | (...)... : String | Test.java:275:49:275:53 | key : String | Test.java:275:125:275:125 | m : HashedMap [] : String | Test.java:3757:13:3757:52 | newHashedMapWithMapKey(...) : HashedMap [] : String | -| Test.java:3757:36:3757:51 | (...)... : String | Test.java:275:49:275:53 | key : String | Test.java:275:125:275:125 | m : HashedMap [] : String | Test.java:3757:13:3757:52 | newHashedMapWithMapKey(...) : HashedMap [] : String | | Test.java:3759:19:3759:21 | out : Map [] : String | Test.java:228:18:228:29 | map : Map [] : String | Test.java:228:41:228:70 | next(...) : String | Test.java:3759:9:3759:22 | getMapKey(...) | | Test.java:3764:38:3764:53 | (...)... : String | Test.java:293:51:293:57 | value : String | Test.java:293:131:293:131 | m : HashedMap [] : String | Test.java:3764:13:3764:54 | newHashedMapWithMapValue(...) : HashedMap [] : String | -| Test.java:3764:38:3764:53 | (...)... : String | Test.java:293:51:293:57 | value : String | Test.java:293:131:293:131 | m : HashedMap [] : String | Test.java:3764:13:3764:54 | newHashedMapWithMapValue(...) : HashedMap [] : String | | Test.java:3766:21:3766:23 | out : Map [] : String | Test.java:232:20:232:31 | map : Map [] : String | Test.java:232:43:232:55 | get(...) : String | Test.java:3766:9:3766:24 | getMapValue(...) | | Test.java:3771:40:3771:55 | (...)... : String | Test.java:288:49:288:58 | key : String | Test.java:288:134:288:134 | m : PatriciaTrie [] : String | Test.java:3771:14:3771:56 | newPatriciaTrieWithMapKey(...) : PatriciaTrie [] : String | -| Test.java:3771:40:3771:55 | (...)... : String | Test.java:288:49:288:58 | key : String | Test.java:288:134:288:134 | m : PatriciaTrie [] : String | Test.java:3771:14:3771:56 | newPatriciaTrieWithMapKey(...) : PatriciaTrie [] : String | | Test.java:3773:19:3773:21 | out : SortedMap [] : String | Test.java:228:18:228:29 | map : SortedMap [] : String | Test.java:228:41:228:70 | next(...) : String | Test.java:3773:9:3773:22 | getMapKey(...) | | Test.java:3778:42:3778:57 | (...)... : String | Test.java:307:50:307:56 | value : String | Test.java:307:129:307:129 | m : PatriciaTrie [] : String | Test.java:3778:14:3778:58 | newPatriciaTrieWithMapValue(...) : PatriciaTrie [] : String | -| Test.java:3778:42:3778:57 | (...)... : String | Test.java:307:50:307:56 | value : String | Test.java:307:129:307:129 | m : PatriciaTrie [] : String | Test.java:3778:14:3778:58 | newPatriciaTrieWithMapValue(...) : PatriciaTrie [] : String | | Test.java:3780:21:3780:23 | out : SortedMap [] : String | Test.java:232:20:232:31 | map : SortedMap [] : String | Test.java:232:43:232:55 | get(...) : String | Test.java:3780:9:3780:24 | getMapValue(...) | | Test.java:3785:40:3785:55 | (...)... : String | Test.java:288:49:288:58 | key : String | Test.java:288:134:288:134 | m : PatriciaTrie [] : String | Test.java:3785:14:3785:56 | newPatriciaTrieWithMapKey(...) : PatriciaTrie [] : String | -| Test.java:3785:40:3785:55 | (...)... : String | Test.java:288:49:288:58 | key : String | Test.java:288:134:288:134 | m : PatriciaTrie [] : String | Test.java:3785:14:3785:56 | newPatriciaTrieWithMapKey(...) : PatriciaTrie [] : String | | Test.java:3787:19:3787:21 | out : Trie [] : String | Test.java:228:18:228:29 | map : Trie [] : String | Test.java:228:41:228:70 | next(...) : String | Test.java:3787:9:3787:22 | getMapKey(...) | | Test.java:3792:42:3792:57 | (...)... : String | Test.java:307:50:307:56 | value : String | Test.java:307:129:307:129 | m : PatriciaTrie [] : String | Test.java:3792:14:3792:58 | newPatriciaTrieWithMapValue(...) : PatriciaTrie [] : String | -| Test.java:3792:42:3792:57 | (...)... : String | Test.java:307:50:307:56 | value : String | Test.java:307:129:307:129 | m : PatriciaTrie [] : String | Test.java:3792:14:3792:58 | newPatriciaTrieWithMapValue(...) : PatriciaTrie [] : String | | Test.java:3794:21:3794:23 | out : Trie [] : String | Test.java:232:20:232:31 | map : Trie [] : String | Test.java:232:43:232:55 | get(...) : String | Test.java:3794:9:3794:24 | getMapValue(...) | | Test.java:3799:35:3799:50 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3799:13:3799:51 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:3799:35:3799:50 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3799:13:3799:51 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:3800:37:3800:38 | in : TreeBag [] : String | Test.java:7104:33:7104:48 | bag : TreeBag [] : String | Test.java:7104:10:7104:31 | parameter this [Return] : MyAbstractBagDecorator [] : String | Test.java:3800:10:3800:39 | new MyAbstractBagDecorator<>(...) : MyAbstractBagDecorator [] : String | | Test.java:3801:20:3801:22 | out : MyAbstractBagDecorator [] : String | Test.java:230:19:230:32 | it : MyAbstractBagDecorator [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:3801:9:3801:23 | getElement(...) | | Test.java:3807:31:3807:32 | in : Map [] : String | Test.java:7110:27:7110:58 | map : Map [] : String | Test.java:7110:10:7110:25 | parameter this [Return] : MyAbstractMapBag [] : String | Test.java:3807:10:3807:33 | new MyAbstractMapBag<>(...) : MyAbstractMapBag [] : String | @@ -18794,50 +18652,35 @@ subpaths | Test.java:3814:10:3814:11 | in : MyAbstractMapBag [] : String | Test.java:7113:33:7113:40 | parameter this : MyAbstractMapBag [] : String | Test.java:7114:11:7114:24 | getMap(...) : Map [] : String | Test.java:3814:10:3814:22 | myGetMap(...) : Map [] : String | | Test.java:3815:19:3815:21 | out : Map [] : String | Test.java:228:18:228:29 | map : Map [] : String | Test.java:228:41:228:70 | next(...) : String | Test.java:3815:9:3815:22 | getMapKey(...) | | Test.java:3820:41:3820:56 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3820:19:3820:57 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:3820:41:3820:56 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3820:19:3820:57 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:3821:43:3821:44 | in : TreeBag [] : String | Test.java:7119:39:7119:60 | bag : TreeBag [] : String | Test.java:7119:10:7119:37 | parameter this [Return] : MyAbstractSortedBagDecorator [] : String | Test.java:3821:10:3821:45 | new MyAbstractSortedBagDecorator<>(...) : MyAbstractSortedBagDecorator [] : String | | Test.java:3822:20:3822:22 | out : MyAbstractSortedBagDecorator [] : String | Test.java:230:19:230:32 | it : MyAbstractSortedBagDecorator [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:3822:9:3822:23 | getElement(...) | | Test.java:3827:35:3827:50 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3827:13:3827:51 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:3827:35:3827:50 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3827:13:3827:51 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:3829:20:3829:22 | out : CollectionBag [] : String | Test.java:230:19:230:32 | it : CollectionBag [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:3829:9:3829:23 | getElement(...) | | Test.java:3834:35:3834:50 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3834:13:3834:51 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:3834:35:3834:50 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3834:13:3834:51 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:3836:20:3836:22 | out : Bag [] : String | Test.java:230:19:230:32 | it : Bag [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:3836:9:3836:23 | getElement(...) | | Test.java:3841:41:3841:56 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3841:19:3841:57 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:3841:41:3841:56 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3841:19:3841:57 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:3843:20:3843:22 | out : CollectionSortedBag [] : String | Test.java:230:19:230:32 | it : CollectionSortedBag [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:3843:9:3843:23 | getElement(...) | | Test.java:3848:41:3848:56 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3848:19:3848:57 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:3848:41:3848:56 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3848:19:3848:57 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:3850:20:3850:22 | out : SortedBag [] : String | Test.java:230:19:230:32 | it : SortedBag [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:3850:9:3850:23 | getElement(...) | | Test.java:3855:42:3855:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3855:20:3855:58 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:3855:42:3855:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3855:20:3855:58 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:3857:20:3857:22 | out : HashBag [] : String | Test.java:230:19:230:32 | it : HashBag [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:3857:9:3857:23 | getElement(...) | | Test.java:3862:35:3862:50 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3862:13:3862:51 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:3862:35:3862:50 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3862:13:3862:51 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:3864:20:3864:22 | out : PredicatedBag [] : String | Test.java:230:19:230:32 | it : PredicatedBag [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:3864:9:3864:23 | getElement(...) | | Test.java:3869:41:3869:56 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3869:19:3869:57 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:3869:41:3869:56 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3869:19:3869:57 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:3871:20:3871:22 | out : PredicatedSortedBag [] : String | Test.java:230:19:230:32 | it : PredicatedSortedBag [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:3871:9:3871:23 | getElement(...) | | Test.java:3876:35:3876:50 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3876:13:3876:51 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:3876:35:3876:50 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3876:13:3876:51 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:3878:20:3878:22 | out : SynchronizedBag [] : String | Test.java:230:19:230:32 | it : SynchronizedBag [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:3878:9:3878:23 | getElement(...) | | Test.java:3883:41:3883:56 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3883:19:3883:57 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:3883:41:3883:56 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3883:19:3883:57 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:3885:20:3885:22 | out : SynchronizedSortedBag [] : String | Test.java:230:19:230:32 | it : SynchronizedSortedBag [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:3885:9:3885:23 | getElement(...) | | Test.java:3890:35:3890:50 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3890:13:3890:51 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:3890:35:3890:50 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3890:13:3890:51 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:3892:20:3892:22 | out : Bag [] : String | Test.java:230:19:230:32 | it : Bag [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:3892:9:3892:23 | getElement(...) | | Test.java:3897:41:3897:56 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3897:19:3897:57 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:3897:41:3897:56 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3897:19:3897:57 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:3899:20:3899:22 | out : TransformedSortedBag [] : String | Test.java:230:19:230:32 | it : TransformedSortedBag [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:3899:9:3899:23 | getElement(...) | | Test.java:3904:42:3904:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3904:20:3904:58 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:3904:42:3904:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3904:20:3904:58 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:3906:20:3906:22 | out : TreeBag [] : String | Test.java:230:19:230:32 | it : TreeBag [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:3906:9:3906:23 | getElement(...) | | Test.java:3911:35:3911:50 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3911:13:3911:51 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:3911:35:3911:50 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3911:13:3911:51 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:3913:20:3913:22 | out : Bag [] : String | Test.java:230:19:230:32 | it : Bag [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:3913:9:3913:23 | getElement(...) | | Test.java:3918:41:3918:56 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3918:19:3918:57 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:3918:41:3918:56 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:3918:19:3918:57 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:3920:20:3920:22 | out : SortedBag [] : String | Test.java:230:19:230:32 | it : SortedBag [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:3920:9:3920:23 | getElement(...) | | Test.java:3925:46:3925:61 | (...)... : String | Test.java:274:61:274:65 | key : String | Test.java:274:77:274:124 | new DualTreeBidiMap(...) : DualTreeBidiMap [] : String | Test.java:3925:17:3925:62 | newDualTreeBidiMapWithMapKey(...) : DualTreeBidiMap [] : String | | Test.java:3926:41:3926:42 | in : DualTreeBidiMap [] : String | Test.java:7125:37:7125:59 | map : DualTreeBidiMap [] : String | Test.java:7125:10:7125:35 | parameter this [Return] : MyAbstractBidiMapDecorator [] : String | Test.java:3926:10:3926:43 | new MyAbstractBidiMapDecorator<>(...) : MyAbstractBidiMapDecorator [] : String | @@ -18908,72 +18751,52 @@ subpaths | Test.java:4142:54:4142:69 | (...)... : String | Test.java:292:63:292:69 | value : String | Test.java:292:81:292:130 | new DualTreeBidiMap(...) : DualTreeBidiMap [] : String | Test.java:4142:23:4142:70 | newDualTreeBidiMapWithMapValue(...) : DualTreeBidiMap [] : String | | Test.java:4144:21:4144:23 | out : SortedBidiMap [] : String | Test.java:232:20:232:31 | map : SortedBidiMap [] : String | Test.java:232:43:232:55 | get(...) : String | Test.java:4144:9:4144:24 | getMapValue(...) | | Test.java:4149:42:4149:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4149:20:4149:58 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:4149:42:4149:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4149:20:4149:58 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:4150:44:4150:45 | in : TreeBag [] : String | Test.java:7149:40:7149:63 | coll : TreeBag [] : String | Test.java:7149:10:7149:38 | parameter this [Return] : MyAbstractCollectionDecorator [] : String | Test.java:4150:10:4150:46 | new MyAbstractCollectionDecorator<>(...) : MyAbstractCollectionDecorator [] : String | | Test.java:4151:20:4151:22 | out : MyAbstractCollectionDecorator [] : String | Test.java:230:19:230:32 | it : MyAbstractCollectionDecorator [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4151:9:4151:23 | getElement(...) | | Test.java:4156:73:4156:111 | newTreeBagWithElement(...) : TreeBag [] : String | Test.java:7149:40:7149:63 | coll : TreeBag [] : String | Test.java:7149:10:7149:38 | parameter this [Return] : MyAbstractCollectionDecorator [] : String | Test.java:4156:39:4156:112 | new MyAbstractCollectionDecorator<>(...) : MyAbstractCollectionDecorator [] : String | | Test.java:4156:95:4156:110 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4156:73:4156:111 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:4156:95:4156:110 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4156:73:4156:111 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:4157:10:4157:11 | in : MyAbstractCollectionDecorator [] : String | Test.java:7152:24:7152:34 | parameter this : MyAbstractCollectionDecorator [] : String | Test.java:7153:11:7153:27 | decorated(...) : Collection [] : String | Test.java:4157:10:4157:25 | myDecorated(...) : Collection [] : String | | Test.java:4158:20:4158:22 | out : Collection [] : String | Test.java:230:19:230:32 | it : Collection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4158:9:4158:23 | getElement(...) | | Test.java:4163:42:4163:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4163:20:4163:58 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:4163:42:4163:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4163:20:4163:58 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:4164:24:4164:25 | in : TreeBag [] : String | Test.java:7155:31:7155:54 | coll : TreeBag [] : String | Test.java:7155:15:7155:29 | parameter this [Return] : MyAbstractCollectionDecorator [] : String | Test.java:4164:4:4164:6 | out [post update] : MyAbstractCollectionDecorator [] : String | | Test.java:4165:20:4165:22 | out : MyAbstractCollectionDecorator [] : String | Test.java:230:19:230:32 | it : MyAbstractCollectionDecorator [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4165:9:4165:23 | getElement(...) | | Test.java:4173:20:4173:22 | out : CompositeCollection [] : Object | Test.java:230:19:230:32 | it : CompositeCollection [] : Object | Test.java:230:44:230:63 | next(...) : Object | Test.java:4173:9:4173:23 | getElement(...) | | Test.java:4181:20:4181:34 | getElement(...) : Collection [] : Object | Test.java:230:19:230:32 | it : Collection [] : Object | Test.java:230:44:230:63 | next(...) : Object | Test.java:4181:9:4181:35 | getElement(...) | | Test.java:4181:31:4181:33 | out : List [, ] : Object | Test.java:230:19:230:32 | it : List [, ] : Object | Test.java:230:44:230:63 | next(...) : Object [] : Object | Test.java:4181:20:4181:34 | getElement(...) : Collection [] : Object | | Test.java:4186:42:4186:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4186:20:4186:58 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:4186:42:4186:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4186:20:4186:58 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:4189:20:4189:22 | out : CompositeCollection [] : String | Test.java:230:19:230:32 | it : CompositeCollection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4189:9:4189:23 | getElement(...) | | Test.java:4194:42:4194:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4194:20:4194:58 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:4194:42:4194:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4194:20:4194:58 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:4197:20:4197:34 | getElement(...) : Collection [] : String | Test.java:230:19:230:32 | it : Collection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4197:9:4197:35 | getElement(...) | | Test.java:4197:31:4197:33 | out : List [, ] : String | Test.java:230:19:230:32 | it : List [, ] : String | Test.java:230:44:230:63 | next(...) : Object [] : String | Test.java:4197:20:4197:34 | getElement(...) : Collection [] : String | | Test.java:4202:42:4202:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4202:20:4202:58 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:4202:42:4202:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4202:20:4202:58 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:4204:20:4204:22 | out : CompositeCollection [] : String | Test.java:230:19:230:32 | it : CompositeCollection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4204:9:4204:23 | getElement(...) | | Test.java:4209:42:4209:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4209:20:4209:58 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:4209:42:4209:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4209:20:4209:58 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:4211:20:4211:22 | out : CompositeCollection [] : String | Test.java:230:19:230:32 | it : CompositeCollection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4211:9:4211:23 | getElement(...) | | Test.java:4216:42:4216:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4216:20:4216:58 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:4216:42:4216:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4216:20:4216:58 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:4218:20:4218:22 | out : CompositeCollection [] : String | Test.java:230:19:230:32 | it : CompositeCollection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4218:9:4218:23 | getElement(...) | | Test.java:4223:61:4223:76 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4223:39:4223:77 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:4223:61:4223:76 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4223:39:4223:77 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:4225:20:4225:22 | out : CompositeCollection [] : String | Test.java:230:19:230:32 | it : CompositeCollection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4225:9:4225:23 | getElement(...) | | Test.java:4230:42:4230:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4230:20:4230:58 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:4230:42:4230:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4230:20:4230:58 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:4232:20:4232:22 | out : CompositeCollection [] : String | Test.java:230:19:230:32 | it : CompositeCollection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4232:9:4232:23 | getElement(...) | | Test.java:4237:42:4237:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4237:20:4237:58 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:4237:42:4237:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4237:20:4237:58 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:4239:20:4239:22 | out : CompositeCollection [] : String | Test.java:230:19:230:32 | it : CompositeCollection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4239:9:4239:23 | getElement(...) | | Test.java:4244:42:4244:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4244:20:4244:58 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:4244:42:4244:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4244:20:4244:58 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:4246:20:4246:22 | out : CompositeCollection [] : String | Test.java:230:19:230:32 | it : CompositeCollection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4246:9:4246:23 | getElement(...) | | Test.java:4251:61:4251:76 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4251:39:4251:77 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:4251:61:4251:76 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4251:39:4251:77 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:4253:20:4253:22 | out : CompositeCollection [] : String | Test.java:230:19:230:32 | it : CompositeCollection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4253:9:4253:23 | getElement(...) | | Test.java:4258:75:4258:90 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4258:53:4258:91 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:4258:75:4258:90 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4258:53:4258:91 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:4260:20:4260:34 | getElement(...) : Collection [] : String | Test.java:230:19:230:32 | it : Collection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4260:9:4260:35 | getElement(...) | | Test.java:4260:31:4260:33 | out : List [, ] : String | Test.java:230:19:230:32 | it : List [, ] : String | Test.java:230:44:230:63 | next(...) : Object [] : String | Test.java:4260:20:4260:34 | getElement(...) : Collection [] : String | | Test.java:4265:75:4265:90 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4265:53:4265:91 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:4265:75:4265:90 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4265:53:4265:91 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:4267:20:4267:22 | out : Collection [] : String | Test.java:230:19:230:32 | it : Collection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4267:9:4267:23 | getElement(...) | | Test.java:4272:42:4272:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4272:20:4272:58 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:4272:42:4272:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4272:20:4272:58 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:4274:20:4274:22 | out : IndexedCollection [] : String | Test.java:230:19:230:32 | it : IndexedCollection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4274:9:4274:23 | getElement(...) | | Test.java:4279:71:4279:86 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4279:49:4279:87 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:4279:71:4279:86 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4279:49:4279:87 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:4286:42:4286:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4286:20:4286:58 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:4286:42:4286:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4286:20:4286:58 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:4288:20:4288:22 | out : IndexedCollection [] : String | Test.java:230:19:230:32 | it : IndexedCollection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4288:9:4288:23 | getElement(...) | | Test.java:4293:42:4293:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4293:20:4293:58 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:4293:42:4293:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4293:20:4293:58 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:4295:20:4295:22 | out : IndexedCollection [] : String | Test.java:230:19:230:32 | it : IndexedCollection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4295:9:4295:23 | getElement(...) | | Test.java:4300:71:4300:86 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4300:49:4300:87 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:4300:71:4300:86 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4300:49:4300:87 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:4302:20:4302:22 | out : Collection [] : String | Test.java:230:19:230:32 | it : Collection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4302:9:4302:23 | getElement(...) | | Test.java:4309:20:4309:45 | createPredicatedList(...) : List [] : String | Test.java:230:19:230:32 | it : List [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4309:9:4309:46 | getElement(...) | | Test.java:4316:20:4316:45 | createPredicatedList(...) : List [] : String | Test.java:230:19:230:32 | it : List [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4316:9:4316:46 | getElement(...) | @@ -18982,7 +18805,6 @@ subpaths | Test.java:4328:80:4328:95 | (...)... : String | Test.java:264:80:264:88 | element : String | Test.java:264:194:264:194 | x : Builder [] : String | Test.java:4328:38:4328:96 | newPredicatedCollectionBuilderWithElement(...) : Builder [] : String | | Test.java:4330:20:4330:22 | out : Bag [] : String | Test.java:230:19:230:32 | it : Bag [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4330:9:4330:23 | getElement(...) | | Test.java:4335:35:4335:50 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4335:13:4335:51 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:4335:35:4335:50 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4335:13:4335:51 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:4338:20:4338:22 | out : Bag [] : String | Test.java:230:19:230:32 | it : Bag [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4338:9:4338:23 | getElement(...) | | Test.java:4343:80:4343:95 | (...)... : String | Test.java:264:80:264:88 | element : String | Test.java:264:194:264:194 | x : Builder [] : String | Test.java:4343:38:4343:96 | newPredicatedCollectionBuilderWithElement(...) : Builder [] : String | | Test.java:4345:20:4345:22 | out : List [] : String | Test.java:230:19:230:32 | it : List [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4345:9:4345:23 | getElement(...) | @@ -18994,7 +18816,6 @@ subpaths | Test.java:4372:80:4372:95 | (...)... : String | Test.java:264:80:264:88 | element : String | Test.java:264:194:264:194 | x : Builder [] : String | Test.java:4372:38:4372:96 | newPredicatedCollectionBuilderWithElement(...) : Builder [] : String | | Test.java:4374:20:4374:22 | out : MultiSet [] : String | Test.java:230:19:230:32 | it : MultiSet [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4374:9:4374:23 | getElement(...) | | Test.java:4379:45:4379:60 | (...)... : String | Test.java:258:49:258:57 | element : String | Test.java:258:127:258:127 | x : HashMultiSet [] : String | Test.java:4379:18:4379:61 | newHashMultiSetWithElement(...) : HashMultiSet [] : String | -| Test.java:4379:45:4379:60 | (...)... : String | Test.java:258:49:258:57 | element : String | Test.java:258:127:258:127 | x : HashMultiSet [] : String | Test.java:4379:18:4379:61 | newHashMultiSetWithElement(...) : HashMultiSet [] : String | | Test.java:4382:20:4382:22 | out : MultiSet [] : String | Test.java:230:19:230:32 | it : MultiSet [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4382:9:4382:23 | getElement(...) | | Test.java:4387:80:4387:95 | (...)... : String | Test.java:264:80:264:88 | element : String | Test.java:264:194:264:194 | x : Builder [] : String | Test.java:4387:38:4387:96 | newPredicatedCollectionBuilderWithElement(...) : Builder [] : String | | Test.java:4389:20:4389:22 | out : Queue [] : String | Test.java:230:19:230:32 | it : Queue [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4389:9:4389:23 | getElement(...) | @@ -19011,21 +18832,16 @@ subpaths | Test.java:4431:80:4431:95 | (...)... : String | Test.java:264:80:264:88 | element : String | Test.java:264:194:264:194 | x : Builder [] : String | Test.java:4431:38:4431:96 | newPredicatedCollectionBuilderWithElement(...) : Builder [] : String | | Test.java:4433:20:4433:22 | out : Collection [] : String | Test.java:230:19:230:32 | it : Collection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4433:9:4433:23 | getElement(...) | | Test.java:4438:42:4438:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4438:20:4438:58 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:4438:42:4438:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4438:20:4438:58 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:4440:20:4440:22 | out : PredicatedCollection [] : String | Test.java:230:19:230:32 | it : PredicatedCollection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4440:9:4440:23 | getElement(...) | | Test.java:4445:42:4445:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4445:20:4445:58 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:4445:42:4445:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4445:20:4445:58 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:4447:20:4447:22 | out : SynchronizedCollection [] : String | Test.java:230:19:230:32 | it : SynchronizedCollection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4447:9:4447:23 | getElement(...) | | Test.java:4452:42:4452:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4452:20:4452:58 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:4452:42:4452:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4452:20:4452:58 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:4454:20:4454:22 | out : TransformedCollection [] : String | Test.java:230:19:230:32 | it : TransformedCollection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4454:9:4454:23 | getElement(...) | | Test.java:4459:42:4459:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4459:20:4459:58 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:4459:42:4459:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4459:20:4459:58 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:4461:20:4461:22 | out : BoundedCollection [] : String | Test.java:230:19:230:32 | it : BoundedCollection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4461:9:4461:23 | getElement(...) | | Test.java:4466:59:4466:74 | (...)... : String | Test.java:253:59:253:67 | element : String | Test.java:253:147:253:147 | x : CircularFifoQueue [] : String | Test.java:4466:27:4466:75 | newCircularFifoQueueWithElement(...) : CircularFifoQueue [] : String | | Test.java:4468:20:4468:22 | out : BoundedCollection [] : String | Test.java:230:19:230:32 | it : BoundedCollection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4468:9:4468:23 | getElement(...) | | Test.java:4473:42:4473:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4473:20:4473:58 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:4473:42:4473:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4473:20:4473:58 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:4475:20:4475:22 | out : Collection [] : String | Test.java:230:19:230:32 | it : Collection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:4475:9:4475:23 | getElement(...) | | Test.java:4480:45:4480:60 | (...)... : String | Test.java:259:49:259:57 | element : String | Test.java:259:69:259:112 | listIterator(...) : ListIterator [] : String | Test.java:4480:18:4480:61 | newListIteratorWithElement(...) : ListIterator [] : String | | Test.java:4481:42:4481:43 | in : ListIterator [] : String | Test.java:7161:38:7161:63 | iterator : ListIterator [] : String | Test.java:7161:10:7161:36 | parameter this [Return] : MyAbstractIteratorDecorator [] : String | Test.java:4481:10:4481:44 | new MyAbstractIteratorDecorator<>(...) : MyAbstractIteratorDecorator [] : String | @@ -19128,7 +18944,6 @@ subpaths | Test.java:4753:49:4753:64 | (...)... : String | Test.java:259:49:259:57 | element : String | Test.java:259:69:259:112 | listIterator(...) : ListIterator [] : String | Test.java:4753:22:4753:65 | newListIteratorWithElement(...) : ListIterator [] : String | | Test.java:4755:20:4755:22 | out : FilterListIterator [] : String | Test.java:231:19:231:32 | it : FilterListIterator [] : String | Test.java:231:44:231:52 | next(...) : String | Test.java:4755:9:4755:23 | getElement(...) | | Test.java:4760:42:4760:85 | newListIteratorWithElement(...) : ListIterator [] : String | Test.java:267:39:267:47 | element : ListIterator [] : String | Test.java:267:107:267:107 | b : TreeBag [, ] : String | Test.java:4760:20:4760:86 | newTreeBagWithElement(...) : TreeBag [, ] : String | -| Test.java:4760:42:4760:85 | newListIteratorWithElement(...) : ListIterator [] : String | Test.java:267:39:267:47 | element : ListIterator [] : String | Test.java:267:107:267:107 | b : TreeBag [, ] : String | Test.java:4760:20:4760:86 | newTreeBagWithElement(...) : TreeBag [, ] : String | | Test.java:4760:69:4760:84 | (...)... : String | Test.java:259:49:259:57 | element : String | Test.java:259:69:259:112 | listIterator(...) : ListIterator [] : String | Test.java:4760:42:4760:85 | newListIteratorWithElement(...) : ListIterator [] : String | | Test.java:4762:20:4762:22 | out : IteratorChain [] : String | Test.java:231:19:231:32 | it : IteratorChain [] : String | Test.java:231:44:231:52 | next(...) : String | Test.java:4762:9:4762:23 | getElement(...) | | Test.java:4767:45:4767:60 | (...)... : String | Test.java:259:49:259:57 | element : String | Test.java:259:69:259:112 | listIterator(...) : ListIterator [] : String | Test.java:4767:18:4767:61 | newListIteratorWithElement(...) : ListIterator [] : String | @@ -19154,7 +18969,6 @@ subpaths | Test.java:4837:45:4837:60 | (...)... : String | Test.java:259:49:259:57 | element : String | Test.java:259:69:259:112 | listIterator(...) : ListIterator [] : String | Test.java:4837:18:4837:61 | newListIteratorWithElement(...) : ListIterator [] : String | | Test.java:4839:20:4839:22 | out : ListIteratorWrapper [] : String | Test.java:231:19:231:32 | it : ListIteratorWrapper [] : String | Test.java:231:44:231:52 | next(...) : String | Test.java:4839:9:4839:23 | getElement(...) | | Test.java:4844:42:4844:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4844:20:4844:58 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:4844:42:4844:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:4844:20:4844:58 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:4846:20:4846:22 | out : LoopingIterator [] : String | Test.java:231:19:231:32 | it : LoopingIterator [] : String | Test.java:231:44:231:52 | next(...) : String | Test.java:4846:9:4846:23 | getElement(...) | | Test.java:4853:20:4853:22 | out : LoopingListIterator [] : String | Test.java:231:19:231:32 | it : LoopingListIterator [] : String | Test.java:231:44:231:52 | next(...) : String | Test.java:4853:9:4853:23 | getElement(...) | | Test.java:4860:20:4860:22 | out : ObjectArrayIterator [] : String | Test.java:231:19:231:32 | it : ObjectArrayIterator [] : String | Test.java:231:44:231:52 | next(...) : String | Test.java:4860:9:4860:23 | getElement(...) | @@ -19229,7 +19043,6 @@ subpaths | Test.java:5208:41:5208:56 | (...)... : String | Test.java:261:41:261:49 | element : String | Test.java:261:61:261:93 | new MultiKey(...) : MultiKey [] : String | Test.java:5208:18:5208:57 | newMultiKeyWithElement(...) : MultiKey [] : String | | Test.java:5210:25:5210:27 | out : Object[] [[]] : String | Test.java:229:24:229:32 | array : Object[] [[]] : String | Test.java:229:44:229:51 | ...[...] : String | Test.java:5210:9:5210:28 | getArrayElement(...) | | Test.java:5215:42:5215:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:5215:20:5215:58 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:5215:42:5215:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:5215:20:5215:58 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:5216:35:5216:36 | in : TreeBag [] : String | Test.java:7204:31:7204:64 | coll : TreeBag [] : String | Test.java:7204:10:7204:29 | parameter this [Return] : MyAbstractLinkedList [] : String | Test.java:5216:10:5216:37 | new MyAbstractLinkedList<>(...) : MyAbstractLinkedList [] : String | | Test.java:5217:20:5217:22 | out : MyAbstractLinkedList [] : String | Test.java:230:19:230:32 | it : MyAbstractLinkedList [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:5217:9:5217:23 | getElement(...) | | Test.java:5224:20:5224:22 | out : AbstractLinkedList [] : Object | Test.java:230:19:230:32 | it : AbstractLinkedList [] : Object | Test.java:230:44:230:63 | next(...) : Object | Test.java:5224:9:5224:23 | getElement(...) | @@ -19418,24 +19231,19 @@ subpaths | Test.java:6169:40:6169:55 | (...)... : String | Test.java:297:47:297:53 | value : String | Test.java:297:136:297:136 | m : MultiKeyMap [] : String | Test.java:6169:21:6169:56 | newMKMWithMapValue(...) : MultiKeyMap [] : String | | Test.java:6176:42:6176:57 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [, ] : String | Test.java:6176:23:6176:58 | newMVMWithMapValue(...) : MultiValueMap [, ] : String | | Test.java:6176:42:6176:57 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:6176:23:6176:58 | newMVMWithMapValue(...) : MultiValueMap [] : String | -| Test.java:6176:42:6176:57 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:6176:23:6176:58 | newMVMWithMapValue(...) : MultiValueMap [] : String | | Test.java:6178:20:6178:22 | out : Collection [] : Object | Test.java:230:19:230:32 | it : Collection [] : Object | Test.java:230:44:230:63 | next(...) : Object | Test.java:6178:9:6178:23 | getElement(...) | | Test.java:6178:20:6178:22 | out : Collection [] : String | Test.java:230:19:230:32 | it : Collection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:6178:9:6178:23 | getElement(...) | | Test.java:6183:57:6183:72 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [, ] : String | Test.java:6183:38:6183:73 | newMVMWithMapValue(...) : MultiValueMap [, ] : String | | Test.java:6183:57:6183:72 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:6183:38:6183:73 | newMVMWithMapValue(...) : MultiValueMap [] : String | -| Test.java:6183:57:6183:72 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:6183:38:6183:73 | newMVMWithMapValue(...) : MultiValueMap [] : String | | Test.java:6185:30:6185:44 | getElement(...) : Entry [] : Object | Test.java:244:29:244:52 | container : Entry [] : Object | Test.java:244:64:244:83 | getValue(...) : Object | Test.java:6185:9:6185:45 | getMapValueFromEntry(...) | | Test.java:6185:30:6185:44 | getElement(...) : Entry [] : String | Test.java:244:29:244:52 | container : Entry [] : String | Test.java:244:64:244:83 | getValue(...) : String | Test.java:6185:9:6185:45 | getMapValueFromEntry(...) | | Test.java:6185:41:6185:43 | out : Iterator [, ] : Object | Test.java:231:19:231:32 | it : Iterator [, ] : Object | Test.java:231:44:231:52 | next(...) : Object [] : Object | Test.java:6185:30:6185:44 | getElement(...) : Entry [] : Object | | Test.java:6185:41:6185:43 | out : Iterator [, ] : String | Test.java:231:19:231:32 | it : Iterator [, ] : String | Test.java:231:44:231:52 | next(...) : Object [] : String | Test.java:6185:30:6185:44 | getElement(...) : Entry [] : String | | Test.java:6190:55:6190:70 | (...)... : String | Test.java:279:47:279:51 | key : String | Test.java:279:131:279:131 | m : MultiValueMap [] : String | Test.java:6190:38:6190:71 | newMVMWithMapKey(...) : MultiValueMap [] : String | -| Test.java:6190:55:6190:70 | (...)... : String | Test.java:279:47:279:51 | key : String | Test.java:279:131:279:131 | m : MultiValueMap [] : String | Test.java:6190:38:6190:71 | newMVMWithMapKey(...) : MultiValueMap [] : String | -| Test.java:6190:55:6190:70 | (...)... : String | Test.java:279:47:279:51 | key : String | Test.java:279:131:279:131 | m : MultiValueMap [] : String | Test.java:6190:38:6190:71 | newMVMWithMapKey(...) : MultiValueMap [] : String | | Test.java:6192:28:6192:42 | getElement(...) : Entry [] : String | Test.java:238:27:238:50 | container : Entry [] : String | Test.java:238:62:238:79 | getKey(...) : String | Test.java:6192:9:6192:43 | getMapKeyFromEntry(...) | | Test.java:6192:39:6192:41 | out : Iterator [, ] : String | Test.java:231:19:231:32 | it : Iterator [, ] : String | Test.java:231:44:231:52 | next(...) : Object [] : String | Test.java:6192:28:6192:42 | getElement(...) : Entry [] : String | | Test.java:6197:57:6197:72 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [, ] : String | Test.java:6197:38:6197:73 | newMVMWithMapValue(...) : MultiValueMap [, ] : String | | Test.java:6197:57:6197:72 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:6197:38:6197:73 | newMVMWithMapValue(...) : MultiValueMap [] : String | -| Test.java:6197:57:6197:72 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:6197:38:6197:73 | newMVMWithMapValue(...) : MultiValueMap [] : String | | Test.java:6199:20:6199:22 | out : Iterator [] : Object | Test.java:231:19:231:32 | it : Iterator [] : Object | Test.java:231:44:231:52 | next(...) : Object | Test.java:6199:9:6199:23 | getElement(...) | | Test.java:6199:20:6199:22 | out : Iterator [] : String | Test.java:231:19:231:32 | it : Iterator [] : String | Test.java:231:44:231:52 | next(...) : String | Test.java:6199:9:6199:23 | getElement(...) | | Test.java:6204:47:6204:62 | (...)... : String | Test.java:269:37:269:45 | element : String | Test.java:269:103:269:103 | v : Vector [] : String | Test.java:6204:26:6204:63 | newVectorWithElement(...) : Vector [] : String | @@ -19452,7 +19260,6 @@ subpaths | Test.java:6241:19:6241:21 | out : MultiValueMap [] : String | Test.java:228:18:228:29 | map : MultiValueMap [] : String | Test.java:228:41:228:70 | next(...) : String | Test.java:6241:9:6241:22 | getMapKey(...) | | Test.java:6246:32:6246:47 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [, ] : String | Test.java:6246:13:6246:48 | newMVMWithMapValue(...) : MultiValueMap [, ] : String | | Test.java:6246:32:6246:47 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:6246:13:6246:48 | newMVMWithMapValue(...) : MultiValueMap [] : String | -| Test.java:6246:32:6246:47 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:6246:13:6246:48 | newMVMWithMapValue(...) : MultiValueMap [] : String | | Test.java:6248:20:6248:47 | (...)... : Collection [] : Object | Test.java:230:19:230:32 | it : Collection [] : Object | Test.java:230:44:230:63 | next(...) : Object | Test.java:6248:9:6248:48 | getElement(...) | | Test.java:6248:20:6248:47 | (...)... : Collection [] : String | Test.java:230:19:230:32 | it : Collection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:6248:9:6248:48 | getElement(...) | | Test.java:6248:44:6248:46 | out : MultiValueMap [, ] : Object | Test.java:232:20:232:31 | map : MultiValueMap [, ] : Object | Test.java:232:43:232:55 | get(...) : Object [] : Object | Test.java:6248:32:6248:47 | getMapValue(...) : Object [] : Object | @@ -19463,12 +19270,10 @@ subpaths | Test.java:6255:44:6255:46 | out : MultiValueMap [] : Object | Test.java:232:20:232:31 | map : MultiValueMap [] : Object | Test.java:232:43:232:55 | get(...) : Object | Test.java:6255:32:6255:47 | getMapValue(...) : Object | | Test.java:6262:19:6262:21 | out : MultiValueMap [] : Object | Test.java:228:18:228:29 | map : MultiValueMap [] : Object | Test.java:228:41:228:70 | next(...) : Object | Test.java:6262:9:6262:22 | getMapKey(...) | | Test.java:6267:42:6267:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:6267:20:6267:58 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:6267:42:6267:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:6267:20:6267:58 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:6269:20:6269:47 | (...)... : Collection [] : String | Test.java:230:19:230:32 | it : Collection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:6269:9:6269:48 | getElement(...) | | Test.java:6269:44:6269:46 | out : MultiValueMap [, ] : String | Test.java:232:20:232:31 | map : MultiValueMap [, ] : String | Test.java:232:43:232:55 | get(...) : Object [] : String | Test.java:6269:32:6269:47 | getMapValue(...) : Object [] : String | | Test.java:6274:42:6274:57 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [, ] : String | Test.java:6274:23:6274:58 | newMVMWithMapValue(...) : MultiValueMap [, ] : String | | Test.java:6274:42:6274:57 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:6274:23:6274:58 | newMVMWithMapValue(...) : MultiValueMap [] : String | -| Test.java:6274:42:6274:57 | (...)... : String | Test.java:298:49:298:55 | value : String | Test.java:298:137:298:137 | m : MultiValueMap [] : String | Test.java:6274:23:6274:58 | newMVMWithMapValue(...) : MultiValueMap [] : String | | Test.java:6276:20:6276:22 | out : Collection [] : Object | Test.java:230:19:230:32 | it : Collection [] : Object | Test.java:230:44:230:63 | next(...) : Object | Test.java:6276:9:6276:23 | getElement(...) | | Test.java:6276:20:6276:22 | out : Collection [] : String | Test.java:230:19:230:32 | it : Collection [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:6276:9:6276:23 | getElement(...) | | Test.java:6283:19:6283:21 | out : PassiveExpiringMap [] : String | Test.java:228:18:228:29 | map : PassiveExpiringMap [] : String | Test.java:228:41:228:70 | next(...) : String | Test.java:6283:9:6283:22 | getMapKey(...) | @@ -19549,19 +19354,14 @@ subpaths | Test.java:6589:43:6589:58 | (...)... : String | Test.java:272:58:272:62 | key : String | Test.java:272:160:272:160 | m : ArrayListValuedHashMap [] : String | Test.java:6589:24:6589:59 | newALVHMWithMapKey(...) : ArrayListValuedHashMap [] : String | | Test.java:6591:19:6591:21 | out : UnmodifiableMultiValuedMap [] : String | Test.java:240:18:240:46 | container : UnmodifiableMultiValuedMap [] : String | Test.java:240:58:240:93 | next(...) : String | Test.java:6591:9:6591:22 | getMapKey(...) | | Test.java:6596:42:6596:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:6596:20:6596:58 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:6596:42:6596:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:6596:20:6596:58 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:6598:20:6598:22 | out : HashMultiSet [] : String | Test.java:230:19:230:32 | it : HashMultiSet [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:6598:9:6598:23 | getElement(...) | | Test.java:6603:45:6603:60 | (...)... : String | Test.java:258:49:258:57 | element : String | Test.java:258:127:258:127 | x : HashMultiSet [] : String | Test.java:6603:18:6603:61 | newHashMultiSetWithElement(...) : HashMultiSet [] : String | -| Test.java:6603:45:6603:60 | (...)... : String | Test.java:258:49:258:57 | element : String | Test.java:258:127:258:127 | x : HashMultiSet [] : String | Test.java:6603:18:6603:61 | newHashMultiSetWithElement(...) : HashMultiSet [] : String | | Test.java:6605:20:6605:22 | out : PredicatedMultiSet [] : String | Test.java:230:19:230:32 | it : PredicatedMultiSet [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:6605:9:6605:23 | getElement(...) | | Test.java:6610:45:6610:60 | (...)... : String | Test.java:258:49:258:57 | element : String | Test.java:258:127:258:127 | x : HashMultiSet [] : String | Test.java:6610:18:6610:61 | newHashMultiSetWithElement(...) : HashMultiSet [] : String | -| Test.java:6610:45:6610:60 | (...)... : String | Test.java:258:49:258:57 | element : String | Test.java:258:127:258:127 | x : HashMultiSet [] : String | Test.java:6610:18:6610:61 | newHashMultiSetWithElement(...) : HashMultiSet [] : String | | Test.java:6612:20:6612:22 | out : SynchronizedMultiSet [] : String | Test.java:230:19:230:32 | it : SynchronizedMultiSet [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:6612:9:6612:23 | getElement(...) | | Test.java:6617:45:6617:60 | (...)... : String | Test.java:258:49:258:57 | element : String | Test.java:258:127:258:127 | x : HashMultiSet [] : String | Test.java:6617:18:6617:61 | newHashMultiSetWithElement(...) : HashMultiSet [] : String | -| Test.java:6617:45:6617:60 | (...)... : String | Test.java:258:49:258:57 | element : String | Test.java:258:127:258:127 | x : HashMultiSet [] : String | Test.java:6617:18:6617:61 | newHashMultiSetWithElement(...) : HashMultiSet [] : String | | Test.java:6619:20:6619:22 | out : MultiSet [] : String | Test.java:230:19:230:32 | it : MultiSet [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:6619:9:6619:23 | getElement(...) | | Test.java:6688:42:6688:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:6688:20:6688:58 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:6688:42:6688:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:6688:20:6688:58 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:6690:20:6690:22 | out : CircularFifoQueue [] : String | Test.java:230:19:230:32 | it : CircularFifoQueue [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:6690:9:6690:23 | getElement(...) | | Test.java:6695:59:6695:74 | (...)... : String | Test.java:253:59:253:67 | element : String | Test.java:253:147:253:147 | x : CircularFifoQueue [] : String | Test.java:6695:27:6695:75 | newCircularFifoQueueWithElement(...) : CircularFifoQueue [] : String | | Test.java:6702:47:6702:62 | (...)... : String | Test.java:253:59:253:67 | element : String | Test.java:253:147:253:147 | x : CircularFifoQueue [] : String | Test.java:6702:15:6702:63 | newCircularFifoQueueWithElement(...) : CircularFifoQueue [] : String | @@ -19585,10 +19385,8 @@ subpaths | Test.java:6762:20:6762:34 | getElement(...) : Set [] : Object | Test.java:230:19:230:32 | it : Set [] : Object | Test.java:230:44:230:63 | next(...) : Object | Test.java:6762:9:6762:35 | getElement(...) | | Test.java:6762:31:6762:33 | out : List [, ] : Object | Test.java:230:19:230:32 | it : List [, ] : Object | Test.java:230:44:230:63 | next(...) : Object [] : Object | Test.java:6762:20:6762:34 | getElement(...) : Set [] : Object | | Test.java:6767:42:6767:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:6767:20:6767:58 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:6767:42:6767:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:6767:20:6767:58 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:6770:20:6770:22 | out : CompositeSet [] : String | Test.java:230:19:230:32 | it : CompositeSet [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:6770:9:6770:23 | getElement(...) | | Test.java:6775:42:6775:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:6775:20:6775:58 | newTreeBagWithElement(...) : TreeBag [] : String | -| Test.java:6775:42:6775:57 | (...)... : String | Test.java:267:39:267:47 | element : String | Test.java:267:107:267:107 | b : TreeBag [] : String | Test.java:6775:20:6775:58 | newTreeBagWithElement(...) : TreeBag [] : String | | Test.java:6778:20:6778:34 | getElement(...) : Set [] : String | Test.java:230:19:230:32 | it : Set [] : String | Test.java:230:44:230:63 | next(...) : String | Test.java:6778:9:6778:35 | getElement(...) | | Test.java:6778:31:6778:33 | out : List [, ] : String | Test.java:230:19:230:32 | it : List [, ] : String | Test.java:230:44:230:63 | next(...) : Object [] : String | Test.java:6778:20:6778:34 | getElement(...) : Set [] : String | | Test.java:6783:42:6783:57 | (...)... : String | Test.java:260:53:260:61 | element : String | Test.java:260:135:260:135 | x : ListOrderedSet [] : String | Test.java:6783:13:6783:58 | newListOrderedSetWithElement(...) : ListOrderedSet [] : String | @@ -19643,19 +19441,13 @@ subpaths | Test.java:6988:19:6988:21 | out : PatriciaTrie [] : String | Test.java:228:18:228:29 | map : PatriciaTrie [] : String | Test.java:228:41:228:70 | next(...) : String | Test.java:6988:9:6988:22 | getMapKey(...) | | Test.java:6995:21:6995:23 | out : PatriciaTrie [] : String | Test.java:232:20:232:31 | map : PatriciaTrie [] : String | Test.java:232:43:232:55 | get(...) : String | Test.java:6995:9:6995:24 | getMapValue(...) | | Test.java:6999:56:6999:71 | (...)... : String | Test.java:288:49:288:58 | key : String | Test.java:288:134:288:134 | m : PatriciaTrie [] : String | Test.java:6999:30:6999:72 | newPatriciaTrieWithMapKey(...) : PatriciaTrie [] : String | -| Test.java:6999:56:6999:71 | (...)... : String | Test.java:288:49:288:58 | key : String | Test.java:288:134:288:134 | m : PatriciaTrie [] : String | Test.java:6999:30:6999:72 | newPatriciaTrieWithMapKey(...) : PatriciaTrie [] : String | | Test.java:7002:28:7002:30 | out : Entry [] : String | Test.java:238:27:238:50 | container : Entry [] : String | Test.java:238:62:238:79 | getKey(...) : String | Test.java:7002:9:7002:31 | getMapKeyFromEntry(...) | | Test.java:7006:58:7006:73 | (...)... : String | Test.java:307:50:307:56 | value : String | Test.java:307:129:307:129 | m : PatriciaTrie [] : String | Test.java:7006:30:7006:74 | newPatriciaTrieWithMapValue(...) : PatriciaTrie [] : String | -| Test.java:7006:58:7006:73 | (...)... : String | Test.java:307:50:307:56 | value : String | Test.java:307:129:307:129 | m : PatriciaTrie [] : String | Test.java:7006:30:7006:74 | newPatriciaTrieWithMapValue(...) : PatriciaTrie [] : String | | Test.java:7009:30:7009:32 | out : Entry [] : String | Test.java:244:29:244:52 | container : Entry [] : String | Test.java:244:64:244:83 | getValue(...) : String | Test.java:7009:9:7009:33 | getMapValueFromEntry(...) | | Test.java:7013:56:7013:71 | (...)... : String | Test.java:288:49:288:58 | key : String | Test.java:288:134:288:134 | m : PatriciaTrie [] : String | Test.java:7013:30:7013:72 | newPatriciaTrieWithMapKey(...) : PatriciaTrie [] : String | -| Test.java:7013:56:7013:71 | (...)... : String | Test.java:288:49:288:58 | key : String | Test.java:288:134:288:134 | m : PatriciaTrie [] : String | Test.java:7013:30:7013:72 | newPatriciaTrieWithMapKey(...) : PatriciaTrie [] : String | | Test.java:7020:58:7020:73 | (...)... : String | Test.java:307:50:307:56 | value : String | Test.java:307:129:307:129 | m : PatriciaTrie [] : String | Test.java:7020:30:7020:74 | newPatriciaTrieWithMapValue(...) : PatriciaTrie [] : String | -| Test.java:7020:58:7020:73 | (...)... : String | Test.java:307:50:307:56 | value : String | Test.java:307:129:307:129 | m : PatriciaTrie [] : String | Test.java:7020:30:7020:74 | newPatriciaTrieWithMapValue(...) : PatriciaTrie [] : String | -| Test.java:7028:40:7028:55 | (...)... : String | Test.java:288:49:288:58 | key : String | Test.java:288:134:288:134 | m : PatriciaTrie [] : String | Test.java:7028:14:7028:56 | newPatriciaTrieWithMapKey(...) : PatriciaTrie [] : String | | Test.java:7028:40:7028:55 | (...)... : String | Test.java:288:49:288:58 | key : String | Test.java:288:134:288:134 | m : PatriciaTrie [] : String | Test.java:7028:14:7028:56 | newPatriciaTrieWithMapKey(...) : PatriciaTrie [] : String | | Test.java:7030:19:7030:21 | out : Trie [] : String | Test.java:228:18:228:29 | map : Trie [] : String | Test.java:228:41:228:70 | next(...) : String | Test.java:7030:9:7030:22 | getMapKey(...) | | Test.java:7035:42:7035:57 | (...)... : String | Test.java:307:50:307:56 | value : String | Test.java:307:129:307:129 | m : PatriciaTrie [] : String | Test.java:7035:14:7035:58 | newPatriciaTrieWithMapValue(...) : PatriciaTrie [] : String | -| Test.java:7035:42:7035:57 | (...)... : String | Test.java:307:50:307:56 | value : String | Test.java:307:129:307:129 | m : PatriciaTrie [] : String | Test.java:7035:14:7035:58 | newPatriciaTrieWithMapValue(...) : PatriciaTrie [] : String | | Test.java:7037:21:7037:23 | out : Trie [] : String | Test.java:232:20:232:31 | map : Trie [] : String | Test.java:232:43:232:55 | get(...) : String | Test.java:7037:9:7037:24 | getMapValue(...) | testFailures 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 93eaf02d839..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 | @@ -745,12 +745,9 @@ edges | ArrayUtilsTest.java:68:27:68:57 | {...} : int[] [[]] : Number | ArrayUtilsTest.java:69:56:69:66 | taintedInts : int[] [[]] : Number | provenance | | | ArrayUtilsTest.java:68:39:68:55 | taint(...) : Number | ArrayUtilsTest.java:68:27:68:57 | {...} : int[] [[]] : Number | provenance | | | ArrayUtilsTest.java:69:36:69:67 | toObject(...) : Integer[] [[]] : Number | ArrayUtilsTest.java:70:12:70:27 | taintedBoxedInts | provenance | | -| ArrayUtilsTest.java:69:36:69:67 | toObject(...) : Integer[] [[]] : Number | ArrayUtilsTest.java:71:35:71:50 | taintedBoxedInts : Integer[] | provenance | | | ArrayUtilsTest.java:69:36:69:67 | toObject(...) : Integer[] [[]] : Number | ArrayUtilsTest.java:71:35:71:50 | taintedBoxedInts : Integer[] [[]] : Number | provenance | | | ArrayUtilsTest.java:69:56:69:66 | taintedInts : int[] [[]] : Number | ArrayUtilsTest.java:69:36:69:67 | toObject(...) : Integer[] [[]] : Number | provenance | MaD:53 | | ArrayUtilsTest.java:71:12:71:51 | toPrimitive(...) : int[] [[]] : Number | ArrayUtilsTest.java:71:12:71:51 | toPrimitive(...) | provenance | | -| ArrayUtilsTest.java:71:12:71:51 | toPrimitive(...) : int[] [[]] : Object | ArrayUtilsTest.java:71:12:71:51 | toPrimitive(...) | provenance | | -| ArrayUtilsTest.java:71:35:71:50 | taintedBoxedInts : Integer[] | ArrayUtilsTest.java:71:12:71:51 | toPrimitive(...) : int[] [[]] : Object | provenance | MaD:54 | | ArrayUtilsTest.java:71:35:71:50 | taintedBoxedInts : Integer[] [[]] : Number | ArrayUtilsTest.java:71:12:71:51 | toPrimitive(...) : int[] [[]] : Number | provenance | MaD:54 | | ArrayUtilsTest.java:72:12:72:70 | toPrimitive(...) : int[] [[]] : Number | ArrayUtilsTest.java:72:12:72:70 | toPrimitive(...) | provenance | | | ArrayUtilsTest.java:72:53:72:69 | taint(...) : Number | ArrayUtilsTest.java:72:12:72:70 | toPrimitive(...) : int[] [[]] : Number | provenance | MaD:55 | @@ -948,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 | @@ -1197,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 | @@ -1222,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 | @@ -1278,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 | @@ -1675,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 | @@ -1924,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 | @@ -1949,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 | @@ -2004,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 | @@ -2153,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 | @@ -2172,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 | @@ -2193,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 | @@ -2242,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 | @@ -2271,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 | @@ -2306,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 | @@ -2335,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 | @@ -2448,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 | @@ -2467,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 | @@ -2488,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 | @@ -2537,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 | @@ -2566,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 | @@ -2617,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 | | @@ -2631,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 | @@ -2777,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 | @@ -2787,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 | @@ -3041,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 | @@ -3066,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 | @@ -3121,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 | @@ -3201,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 | @@ -3434,8 +3431,6 @@ nodes | ArrayUtilsTest.java:70:12:70:27 | taintedBoxedInts | semmle.label | taintedBoxedInts | | ArrayUtilsTest.java:71:12:71:51 | toPrimitive(...) | semmle.label | toPrimitive(...) | | ArrayUtilsTest.java:71:12:71:51 | toPrimitive(...) : int[] [[]] : Number | semmle.label | toPrimitive(...) : int[] [[]] : Number | -| ArrayUtilsTest.java:71:12:71:51 | toPrimitive(...) : int[] [[]] : Object | semmle.label | toPrimitive(...) : int[] [[]] : Object | -| ArrayUtilsTest.java:71:35:71:50 | taintedBoxedInts : Integer[] | semmle.label | taintedBoxedInts : Integer[] | | ArrayUtilsTest.java:71:35:71:50 | taintedBoxedInts : Integer[] [[]] : Number | semmle.label | taintedBoxedInts : Integer[] [[]] : Number | | ArrayUtilsTest.java:72:12:72:70 | toPrimitive(...) | semmle.label | toPrimitive(...) | | ArrayUtilsTest.java:72:12:72:70 | toPrimitive(...) : int[] [[]] : Number | semmle.label | toPrimitive(...) : int[] [[]] : Number | diff --git a/java/ql/test/library-tests/frameworks/spring/beans/test.expected b/java/ql/test/library-tests/frameworks/spring/beans/test.expected index 8c015c105f9..f2ed45d01da 100644 --- a/java/ql/test/library-tests/frameworks/spring/beans/test.expected +++ b/java/ql/test/library-tests/frameworks/spring/beans/test.expected @@ -312,13 +312,8 @@ nodes | Test.java:21:10:21:18 | container : MutablePropertyValues [] : PropertyValue | semmle.label | container : MutablePropertyValues [] : PropertyValue | | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue | semmle.label | getPropertyValue(...) : PropertyValue | | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue | semmle.label | getPropertyValue(...) : PropertyValue | -| Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue | semmle.label | getPropertyValue(...) : PropertyValue | -| Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue | semmle.label | getPropertyValue(...) : PropertyValue | -| Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue [] : Object | semmle.label | getPropertyValue(...) : PropertyValue [] : Object | | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue [] : Object | semmle.label | getPropertyValue(...) : PropertyValue [] : Object | | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue [] : String | semmle.label | getPropertyValue(...) : PropertyValue [] : String | -| Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue [] : String | semmle.label | getPropertyValue(...) : PropertyValue [] : String | -| Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue [] : Object | semmle.label | getPropertyValue(...) : PropertyValue [] : Object | | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue [] : Object | semmle.label | getPropertyValue(...) : PropertyValue [] : Object | | Test.java:24:26:24:48 | container : PropertyValue [] : Object | semmle.label | container : PropertyValue [] : Object | | Test.java:24:26:24:48 | container : PropertyValue [] : String | semmle.label | container : PropertyValue [] : String | @@ -540,39 +535,27 @@ nodes | Test.java:279:25:279:27 | out : PropertyValue[] [[]] : PropertyValue | semmle.label | out : PropertyValue[] [[]] : PropertyValue | subpaths | Test.java:57:27:57:29 | out : MutablePropertyValues [] : Object | Test.java:20:34:20:64 | container : MutablePropertyValues [] : Object | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue | Test.java:57:9:57:30 | getElementDefault(...) | -| Test.java:57:27:57:29 | out : MutablePropertyValues [] : Object | Test.java:20:34:20:64 | container : MutablePropertyValues [] : Object | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue | Test.java:57:9:57:30 | getElementDefault(...) | | Test.java:64:26:64:47 | getElementDefault(...) : PropertyValue [] : Object | Test.java:24:26:24:48 | container : PropertyValue [] : Object | Test.java:25:10:25:28 | getName(...) : String | Test.java:64:9:64:48 | getMapKeyDefault(...) | | Test.java:64:44:64:46 | out : MutablePropertyValues [, ] : Object | Test.java:20:34:20:64 | container : MutablePropertyValues [, ] : Object | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue [] : Object | Test.java:64:26:64:47 | getElementDefault(...) : PropertyValue [] : Object | -| Test.java:64:44:64:46 | out : MutablePropertyValues [, ] : Object | Test.java:20:34:20:64 | container : MutablePropertyValues [, ] : Object | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue [] : Object | Test.java:64:26:64:47 | getElementDefault(...) : PropertyValue [] : Object | | Test.java:71:28:71:49 | getElementDefault(...) : PropertyValue [] : Object | Test.java:28:28:28:50 | container : PropertyValue [] : Object | Test.java:29:10:29:29 | getValue(...) : Object | Test.java:71:9:71:50 | getMapValueDefault(...) | | Test.java:71:46:71:48 | out : MutablePropertyValues [, ] : Object | Test.java:20:34:20:64 | container : MutablePropertyValues [, ] : Object | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue [] : Object | Test.java:71:28:71:49 | getElementDefault(...) : PropertyValue [] : Object | -| Test.java:71:46:71:48 | out : MutablePropertyValues [, ] : Object | Test.java:20:34:20:64 | container : MutablePropertyValues [, ] : Object | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue [] : Object | Test.java:71:28:71:49 | getElementDefault(...) : PropertyValue [] : Object | | Test.java:76:60:76:83 | (...)... : PropertyValue | Test.java:32:60:32:80 | element : PropertyValue | Test.java:33:10:33:52 | new MutablePropertyValues(...) : MutablePropertyValues [] : PropertyValue | Test.java:76:24:76:84 | newMutablePropertyValuesWithElement(...) : MutablePropertyValues [] : PropertyValue | | Test.java:78:27:78:29 | out : MutablePropertyValues [] : PropertyValue | Test.java:20:34:20:64 | container : MutablePropertyValues [] : PropertyValue | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue | Test.java:78:9:78:30 | getElementDefault(...) | -| Test.java:78:27:78:29 | out : MutablePropertyValues [] : PropertyValue | Test.java:20:34:20:64 | container : MutablePropertyValues [] : PropertyValue | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue | Test.java:78:9:78:30 | getElementDefault(...) | | Test.java:92:26:92:47 | getElementDefault(...) : PropertyValue [] : String | Test.java:24:26:24:48 | container : PropertyValue [] : String | Test.java:25:10:25:28 | getName(...) : String | Test.java:92:9:92:48 | getMapKeyDefault(...) | | Test.java:92:44:92:46 | out : MutablePropertyValues [, ] : String | Test.java:20:34:20:64 | container : MutablePropertyValues [, ] : String | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue [] : String | Test.java:92:26:92:47 | getElementDefault(...) : PropertyValue [] : String | -| Test.java:92:44:92:46 | out : MutablePropertyValues [, ] : String | Test.java:20:34:20:64 | container : MutablePropertyValues [, ] : String | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue [] : String | Test.java:92:26:92:47 | getElementDefault(...) : PropertyValue [] : String | | Test.java:99:28:99:49 | getElementDefault(...) : PropertyValue [] : Object | Test.java:28:28:28:50 | container : PropertyValue [] : Object | Test.java:29:10:29:29 | getValue(...) : Object | Test.java:99:9:99:50 | getMapValueDefault(...) | | Test.java:99:46:99:48 | out : MutablePropertyValues [, ] : Object | Test.java:20:34:20:64 | container : MutablePropertyValues [, ] : Object | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue [] : Object | Test.java:99:28:99:49 | getElementDefault(...) : PropertyValue [] : Object | -| Test.java:99:46:99:48 | out : MutablePropertyValues [, ] : Object | Test.java:20:34:20:64 | container : MutablePropertyValues [, ] : Object | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue [] : Object | Test.java:99:28:99:49 | getElementDefault(...) : PropertyValue [] : Object | -| Test.java:113:27:113:29 | out : MutablePropertyValues [] : PropertyValue | Test.java:20:34:20:64 | container : MutablePropertyValues [] : PropertyValue | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue | Test.java:113:9:113:30 | getElementDefault(...) | | Test.java:113:27:113:29 | out : MutablePropertyValues [] : PropertyValue | Test.java:20:34:20:64 | container : MutablePropertyValues [] : PropertyValue | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue | Test.java:113:9:113:30 | getElementDefault(...) | | Test.java:120:26:120:47 | getElementDefault(...) : PropertyValue [] : String | Test.java:24:26:24:48 | container : PropertyValue [] : String | Test.java:25:10:25:28 | getName(...) : String | Test.java:120:9:120:48 | getMapKeyDefault(...) | | Test.java:120:44:120:46 | out : MutablePropertyValues [, ] : String | Test.java:20:34:20:64 | container : MutablePropertyValues [, ] : String | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue [] : String | Test.java:120:26:120:47 | getElementDefault(...) : PropertyValue [] : String | -| Test.java:120:44:120:46 | out : MutablePropertyValues [, ] : String | Test.java:20:34:20:64 | container : MutablePropertyValues [, ] : String | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue [] : String | Test.java:120:26:120:47 | getElementDefault(...) : PropertyValue [] : String | | Test.java:127:28:127:49 | getElementDefault(...) : PropertyValue [] : Object | Test.java:28:28:28:50 | container : PropertyValue [] : Object | Test.java:29:10:29:29 | getValue(...) : Object | Test.java:127:9:127:50 | getMapValueDefault(...) | | Test.java:127:46:127:48 | out : MutablePropertyValues [, ] : Object | Test.java:20:34:20:64 | container : MutablePropertyValues [, ] : Object | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue [] : Object | Test.java:127:28:127:49 | getElementDefault(...) : PropertyValue [] : Object | -| Test.java:127:46:127:48 | out : MutablePropertyValues [, ] : Object | Test.java:20:34:20:64 | container : MutablePropertyValues [, ] : Object | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue [] : Object | Test.java:127:28:127:49 | getElementDefault(...) : PropertyValue [] : Object | | Test.java:141:26:141:47 | getElementDefault(...) : PropertyValue [] : Object | Test.java:24:26:24:48 | container : PropertyValue [] : Object | Test.java:25:10:25:28 | getName(...) : String | Test.java:141:9:141:48 | getMapKeyDefault(...) | | Test.java:141:44:141:46 | out : MutablePropertyValues [, ] : Object | Test.java:20:34:20:64 | container : MutablePropertyValues [, ] : Object | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue [] : Object | Test.java:141:26:141:47 | getElementDefault(...) : PropertyValue [] : Object | -| Test.java:141:44:141:46 | out : MutablePropertyValues [, ] : Object | Test.java:20:34:20:64 | container : MutablePropertyValues [, ] : Object | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue [] : Object | Test.java:141:26:141:47 | getElementDefault(...) : PropertyValue [] : Object | | Test.java:148:28:148:49 | getElementDefault(...) : PropertyValue [] : Object | Test.java:28:28:28:50 | container : PropertyValue [] : Object | Test.java:29:10:29:29 | getValue(...) : Object | Test.java:148:9:148:50 | getMapValueDefault(...) | | Test.java:148:46:148:48 | out : MutablePropertyValues [, ] : Object | Test.java:20:34:20:64 | container : MutablePropertyValues [, ] : Object | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue [] : Object | Test.java:148:28:148:49 | getElementDefault(...) : PropertyValue [] : Object | -| Test.java:148:46:148:48 | out : MutablePropertyValues [, ] : Object | Test.java:20:34:20:64 | container : MutablePropertyValues [, ] : Object | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue [] : Object | Test.java:148:28:148:49 | getElementDefault(...) : PropertyValue [] : Object | | Test.java:160:60:160:83 | (...)... : PropertyValue | Test.java:32:60:32:80 | element : PropertyValue | Test.java:33:10:33:52 | new MutablePropertyValues(...) : MutablePropertyValues [] : PropertyValue | Test.java:160:24:160:84 | newMutablePropertyValuesWithElement(...) : MutablePropertyValues [] : PropertyValue | | Test.java:162:27:162:29 | out : MutablePropertyValues [] : PropertyValue | Test.java:20:34:20:64 | container : MutablePropertyValues [] : PropertyValue | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue | Test.java:162:9:162:30 | getElementDefault(...) | -| Test.java:162:27:162:29 | out : MutablePropertyValues [] : PropertyValue | Test.java:20:34:20:64 | container : MutablePropertyValues [] : PropertyValue | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue | Test.java:162:9:162:30 | getElementDefault(...) | | Test.java:167:68:167:75 | source(...) : Object | Test.java:40:61:40:74 | element : Object | Test.java:41:10:41:57 | new MutablePropertyValues(...) : MutablePropertyValues [, ] : Object | Test.java:167:31:167:76 | newMutablePropertyValuesWithMapValue(...) : MutablePropertyValues [, ] : Object | | Test.java:175:42:175:65 | (...)... : PropertyValue | Test.java:32:60:32:80 | element : PropertyValue | Test.java:33:10:33:52 | new MutablePropertyValues(...) : MutablePropertyValues [] : PropertyValue | Test.java:175:6:175:66 | newMutablePropertyValuesWithElement(...) : MutablePropertyValues [] : PropertyValue | | Test.java:183:42:183:65 | (...)... : PropertyValue | Test.java:32:60:32:80 | element : PropertyValue | Test.java:33:10:33:52 | new MutablePropertyValues(...) : MutablePropertyValues [] : PropertyValue | Test.java:183:6:183:66 | newMutablePropertyValuesWithElement(...) : MutablePropertyValues [] : PropertyValue | @@ -580,7 +563,6 @@ subpaths | Test.java:191:42:191:65 | (...)... : PropertyValue | Test.java:32:60:32:80 | element : PropertyValue | Test.java:33:10:33:52 | new MutablePropertyValues(...) : MutablePropertyValues [] : PropertyValue | Test.java:191:6:191:66 | newMutablePropertyValuesWithElement(...) : MutablePropertyValues [] : PropertyValue | | Test.java:193:25:193:27 | out : PropertyValue[] [[]] : PropertyValue | Test.java:12:24:12:32 | array : PropertyValue[] [[]] : PropertyValue | Test.java:13:10:13:17 | ...[...] : PropertyValue | Test.java:193:9:193:28 | getArrayElement(...) | | Test.java:200:27:200:29 | out : MutablePropertyValues [] : PropertyValue | Test.java:20:34:20:64 | container : MutablePropertyValues [] : PropertyValue | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue | Test.java:200:9:200:30 | getElementDefault(...) | -| Test.java:200:27:200:29 | out : MutablePropertyValues [] : PropertyValue | Test.java:20:34:20:64 | container : MutablePropertyValues [] : PropertyValue | Test.java:21:10:21:39 | getPropertyValue(...) : PropertyValue | Test.java:200:9:200:30 | getElementDefault(...) | | Test.java:214:26:214:28 | out : PropertyValue [] : String | Test.java:24:26:24:48 | container : PropertyValue [] : String | Test.java:25:10:25:28 | getName(...) : String | Test.java:214:9:214:29 | getMapKeyDefault(...) | | Test.java:221:28:221:30 | out : PropertyValue [] : Object | Test.java:28:28:28:50 | container : PropertyValue [] : Object | Test.java:29:10:29:29 | getValue(...) : Object | Test.java:221:9:221:31 | getMapValueDefault(...) | | Test.java:228:26:228:28 | out : PropertyValue [] : String | Test.java:24:26:24:48 | container : PropertyValue [] : String | Test.java:25:10:25:28 | getName(...) : String | Test.java:228:9:228:29 | getMapKeyDefault(...) | diff --git a/java/ql/test/library-tests/frameworks/spring/cache/test.expected b/java/ql/test/library-tests/frameworks/spring/cache/test.expected index 3d15ea5d79f..5183f66ad64 100644 --- a/java/ql/test/library-tests/frameworks/spring/cache/test.expected +++ b/java/ql/test/library-tests/frameworks/spring/cache/test.expected @@ -156,7 +156,6 @@ nodes | Test.java:42:21:42:48 | container : ValueWrapper [] : Object | semmle.label | container : ValueWrapper [] : Object | | Test.java:42:60:42:68 | container : ValueWrapper [] : Object | semmle.label | container : ValueWrapper [] : Object | | Test.java:42:60:42:74 | get(...) : Object | semmle.label | get(...) : Object | -| Test.java:42:60:42:74 | get(...) : Object | semmle.label | get(...) : Object | | Test.java:51:16:51:23 | source(...) : Object | semmle.label | source(...) : Object | | Test.java:52:10:52:58 | new ValueRetrievalException(...) : ValueRetrievalException [] : Object | semmle.label | new ValueRetrievalException(...) : ValueRetrievalException [] : Object | | Test.java:52:44:52:45 | in : Object | semmle.label | in : Object | @@ -228,13 +227,11 @@ nodes | Test.java:137:21:137:23 | out : ValueWrapper [] : Object | semmle.label | out : ValueWrapper [] : Object | subpaths | Test.java:42:60:42:68 | container : ValueWrapper [] : Object | Test.java:18:17:18:19 | parameter this : ValueWrapper [] : Object | Test.java:18:32:18:45 | get(...) : Object | Test.java:42:60:42:74 | get(...) : Object | -| Test.java:42:60:42:68 | container : ValueWrapper [] : Object | Test.java:18:17:18:19 | parameter this : ValueWrapper [] : Object | Test.java:18:32:18:45 | get(...) : Object | Test.java:42:60:42:74 | get(...) : Object | | Test.java:53:19:53:21 | out : ValueRetrievalException [] : Object | Test.java:39:19:39:57 | container : ValueRetrievalException [] : Object | Test.java:39:69:39:86 | getKey(...) : Object | Test.java:53:9:53:22 | getMapKey(...) | | Test.java:65:45:65:52 | source(...) : Object | Test.java:13:16:13:29 | element : Object | Test.java:13:3:13:14 | parameter this [Return] : ValueWrapper [] : Object | Test.java:65:28:65:53 | new ValueWrapper(...) : ValueWrapper [] : Object | | Test.java:66:10:66:11 | in : ValueWrapper [] : Object | Test.java:18:17:18:19 | parameter this : ValueWrapper [] : Object | Test.java:18:32:18:45 | get(...) : Object | Test.java:66:10:66:17 | get(...) : Object | | Test.java:72:36:72:43 | source(...) : Object | Test.java:22:26:22:37 | value : Object | Test.java:22:3:22:12 | parameter this [Return] : DummyCache [] : Object | Test.java:72:15:72:44 | new DummyCache(...) : DummyCache [] : Object | | Test.java:74:21:74:23 | out : ValueWrapper [] : Object | Test.java:42:21:42:48 | container : ValueWrapper [] : Object | Test.java:42:60:42:74 | get(...) : Object | Test.java:74:9:74:24 | getMapValue(...) | -| Test.java:74:21:74:23 | out : ValueWrapper [] : Object | Test.java:42:21:42:48 | container : ValueWrapper [] : Object | Test.java:42:60:42:74 | get(...) : Object | Test.java:74:9:74:24 | getMapValue(...) | | Test.java:79:36:79:43 | source(...) : Object | Test.java:22:26:22:37 | value : Object | Test.java:22:3:22:12 | parameter this [Return] : DummyCache [] : Object | Test.java:79:15:79:44 | new DummyCache(...) : DummyCache [] : Object | | Test.java:86:36:86:43 | source(...) : Object | Test.java:22:26:22:37 | value : Object | Test.java:22:3:22:12 | parameter this [Return] : DummyCache [] : Object | Test.java:86:15:86:44 | new DummyCache(...) : DummyCache [] : Object | | Test.java:93:30:93:37 | source(...) : Object | Test.java:22:14:22:23 | key : Object | Test.java:22:3:22:12 | parameter this [Return] : DummyCache [] : Object | Test.java:93:15:93:44 | new DummyCache(...) : DummyCache [] : Object | @@ -247,5 +244,4 @@ subpaths | Test.java:130:21:130:23 | out : Cache [] : Object | Test.java:41:21:41:35 | container : Cache [] : Object | Test.java:41:47:41:78 | get(...) : Object | Test.java:130:9:130:24 | getMapValue(...) | | Test.java:135:36:135:43 | source(...) : Object | Test.java:22:26:22:37 | value : Object | Test.java:22:3:22:12 | parameter this [Return] : DummyCache [] : Object | Test.java:135:15:135:44 | new DummyCache(...) : DummyCache [] : Object | | Test.java:137:21:137:23 | out : ValueWrapper [] : Object | Test.java:42:21:42:48 | container : ValueWrapper [] : Object | Test.java:42:60:42:74 | get(...) : Object | Test.java:137:9:137:24 | getMapValue(...) | -| Test.java:137:21:137:23 | out : ValueWrapper [] : Object | Test.java:42:21:42:48 | container : ValueWrapper [] : Object | Test.java:42:60:42:74 | get(...) : Object | Test.java:137:9:137:24 | getMapValue(...) | testFailures diff --git a/java/ql/test/library-tests/frameworks/spring/util/test.expected b/java/ql/test/library-tests/frameworks/spring/util/test.expected index f27398764b8..bb5944e8dee 100644 --- a/java/ql/test/library-tests/frameworks/spring/util/test.expected +++ b/java/ql/test/library-tests/frameworks/spring/util/test.expected @@ -208,12 +208,10 @@ edges | Test.java:53:70:53:76 | element : Object | Test.java:53:56:53:77 | {...} : Object[] [[]] : Object | provenance | | | Test.java:54:37:54:50 | element : Object | Test.java:54:94:54:100 | element : Object | provenance | | | Test.java:54:88:54:88 | p [post update] : Properties [] : Object | Test.java:54:117:54:117 | p : Properties [] : Object | provenance | | -| Test.java:54:88:54:88 | p [post update] : Properties [] : Object | Test.java:54:117:54:117 | p : Properties [] : Object | provenance | | | Test.java:54:94:54:100 | element : Object | Test.java:54:88:54:88 | p [post update] : Properties [] : Object | provenance | MaD:5 | | Test.java:54:94:54:100 | element : Object | Test.java:54:88:54:88 | p [post update] : Properties [] : Object | provenance | MaD:13 | | Test.java:55:39:55:52 | element : Object | Test.java:55:102:55:108 | element : Object | provenance | | | Test.java:55:90:55:90 | p [post update] : Properties [] : Object | Test.java:55:119:55:119 | p : Properties [] : Object | provenance | | -| Test.java:55:90:55:90 | p [post update] : Properties [] : Object | Test.java:55:119:55:119 | p : Properties [] : Object | provenance | | | Test.java:55:102:55:108 | element : Object | Test.java:55:90:55:90 | p [post update] : Properties [] : Object | provenance | MaD:6 | | Test.java:55:102:55:108 | element : Object | Test.java:55:90:55:90 | p [post update] : Properties [] : Object | provenance | MaD:14 | | Test.java:66:17:66:32 | (...)... : String | Test.java:67:33:67:34 | in : String | provenance | | @@ -1264,16 +1262,12 @@ nodes | Test.java:53:70:53:76 | element : Object | semmle.label | element : Object | | Test.java:54:37:54:50 | element : Object | semmle.label | element : Object | | Test.java:54:88:54:88 | p [post update] : Properties [] : Object | semmle.label | p [post update] : Properties [] : Object | -| Test.java:54:88:54:88 | p [post update] : Properties [] : Object | semmle.label | p [post update] : Properties [] : Object | | Test.java:54:94:54:100 | element : Object | semmle.label | element : Object | | Test.java:54:117:54:117 | p : Properties [] : Object | semmle.label | p : Properties [] : Object | -| Test.java:54:117:54:117 | p : Properties [] : Object | semmle.label | p : Properties [] : Object | | Test.java:55:39:55:52 | element : Object | semmle.label | element : Object | | Test.java:55:90:55:90 | p [post update] : Properties [] : Object | semmle.label | p [post update] : Properties [] : Object | -| Test.java:55:90:55:90 | p [post update] : Properties [] : Object | semmle.label | p [post update] : Properties [] : Object | | Test.java:55:102:55:108 | element : Object | semmle.label | element : Object | | Test.java:55:119:55:119 | p : Properties [] : Object | semmle.label | p : Properties [] : Object | -| Test.java:55:119:55:119 | p : Properties [] : Object | semmle.label | p : Properties [] : Object | | Test.java:66:17:66:32 | (...)... : String | semmle.label | (...)... : String | | Test.java:66:25:66:32 | source(...) : Object | semmle.label | source(...) : Object | | Test.java:67:33:67:34 | in : String | semmle.label | in : String | @@ -2338,10 +2332,8 @@ subpaths | Test.java:251:38:251:45 | source(...) : Object | Test.java:53:31:53:44 | element : Object | Test.java:53:56:53:77 | new Object[] : Object[] [[]] : Object | Test.java:251:18:251:46 | newWithArrayElement(...) : Object[] [[]] : Object | | Test.java:253:20:253:22 | out : Collection [] : Object | Test.java:49:19:49:41 | container : Collection [] : Object | Test.java:49:53:49:79 | next(...) : Object | Test.java:253:9:253:23 | getElement(...) | | Test.java:258:44:258:51 | source(...) : Object | Test.java:54:37:54:50 | element : Object | Test.java:54:117:54:117 | p : Properties [] : Object | Test.java:258:20:258:52 | newPropertiesWithMapKey(...) : Properties [] : Object | -| Test.java:258:44:258:51 | source(...) : Object | Test.java:54:37:54:50 | element : Object | Test.java:54:117:54:117 | p : Properties [] : Object | Test.java:258:20:258:52 | newPropertiesWithMapKey(...) : Properties [] : Object | | Test.java:260:19:260:21 | out : Map [] : Object | Test.java:51:21:51:39 | container : Map [] : Object | Test.java:51:51:51:86 | next(...) : Object | Test.java:260:9:260:22 | getMapKey(...) | | Test.java:265:46:265:53 | source(...) : Object | Test.java:55:39:55:52 | element : Object | Test.java:55:119:55:119 | p : Properties [] : Object | Test.java:265:20:265:54 | newPropertiesWithMapValue(...) : Properties [] : Object | -| Test.java:265:46:265:53 | source(...) : Object | Test.java:55:39:55:52 | element : Object | Test.java:55:119:55:119 | p : Properties [] : Object | Test.java:265:20:265:54 | newPropertiesWithMapValue(...) : Properties [] : Object | | Test.java:267:21:267:23 | out : Map [] : Object | Test.java:52:23:52:41 | container : Map [] : Object | Test.java:52:53:52:71 | get(...) : Object | Test.java:267:9:267:24 | getMapValue(...) | | Test.java:274:20:274:22 | out : Iterator [] : Object | Test.java:50:19:50:39 | container : Iterator [] : Object | Test.java:50:51:50:66 | next(...) : Object | Test.java:274:9:274:23 | getElement(...) | | Test.java:281:20:281:35 | getMapValue(...) : List [] : Object | Test.java:49:19:49:41 | container : List [] : Object | Test.java:49:53:49:79 | next(...) : Object | Test.java:281:9:281:36 | getElement(...) | diff --git a/java/ql/test/library-tests/frameworks/stream/test.expected b/java/ql/test/library-tests/frameworks/stream/test.expected index ddb42b6a63d..8fc629e7fd7 100644 --- a/java/ql/test/library-tests/frameworks/stream/test.expected +++ b/java/ql/test/library-tests/frameworks/stream/test.expected @@ -305,12 +305,16 @@ edges | Test.java:239:18:239:19 | a1 [Return] : Object[] [[]] : Object | Test.java:250:18:250:18 | a : Object[] [[]] : Object | provenance | MaD:16+MaD:14 | | Test.java:239:18:239:19 | a1 [Return] : Object[] [[]] : Object | Test.java:254:18:254:19 | a1 : Object[] [[]] : Object | provenance | MaD:16+MaD:14 | | Test.java:239:18:239:19 | a1 [Return] : Object[] [[]] : Object | Test.java:254:22:254:23 | a2 : Object[] [[]] : Object | provenance | MaD:16+MaD:14 | +| Test.java:239:18:239:19 | a1 [Return] : Object[] [[]] : Object | Test.java:265:18:265:19 | a1 : Object[] [[]] : Object | provenance | MaD:16+MaD:14 | +| Test.java:239:18:239:19 | a1 [Return] : Object[] [[]] : Object | Test.java:265:22:265:23 | a2 : Object[] [[]] : Object | provenance | MaD:16+MaD:14 | | Test.java:239:22:239:23 | a2 [Return] : Object[] [[]] : Object | Test.java:238:18:238:18 | a : Object[] [[]] : Object | provenance | MaD:16 | | Test.java:239:22:239:23 | a2 [Return] : Object[] [[]] : Object | Test.java:238:18:238:18 | a : Object[] [[]] : Object | provenance | MaD:16+MaD:14 | | Test.java:239:22:239:23 | a2 [Return] : Object[] [[]] : Object | Test.java:250:18:250:18 | a : Object[] [[]] : Object | provenance | MaD:16 | | Test.java:239:22:239:23 | a2 [Return] : Object[] [[]] : Object | Test.java:250:18:250:18 | a : Object[] [[]] : Object | provenance | MaD:16+MaD:14 | | Test.java:239:22:239:23 | a2 [Return] : Object[] [[]] : Object | Test.java:254:18:254:19 | a1 : Object[] [[]] : Object | provenance | MaD:16+MaD:14 | | Test.java:239:22:239:23 | a2 [Return] : Object[] [[]] : Object | Test.java:254:22:254:23 | a2 : Object[] [[]] : Object | provenance | MaD:16+MaD:14 | +| Test.java:239:22:239:23 | a2 [Return] : Object[] [[]] : Object | Test.java:265:18:265:19 | a1 : Object[] [[]] : Object | provenance | MaD:16+MaD:14 | +| Test.java:239:22:239:23 | a2 [Return] : Object[] [[]] : Object | Test.java:265:22:265:23 | a2 : Object[] [[]] : Object | provenance | MaD:16+MaD:14 | | Test.java:240:21:240:22 | a1 [post update] : Object[] [[]] : Object | Test.java:239:18:239:19 | a1 [Return] : Object[] [[]] : Object | provenance | | | Test.java:240:29:240:47 | source(...) : Object | Test.java:240:21:240:22 | a1 [post update] : Object[] [[]] : Object | provenance | | | Test.java:241:21:241:22 | a2 [post update] : Object[] [[]] : Object | Test.java:239:22:239:23 | a2 [Return] : Object[] [[]] : Object | provenance | | @@ -324,6 +328,8 @@ edges | Test.java:249:23:249:58 | new Object[] : Object[] [[]] : Object | Test.java:250:18:250:18 | a : Object[] [[]] : Object | provenance | MaD:13+MaD:14 | | Test.java:249:23:249:58 | new Object[] : Object[] [[]] : Object | Test.java:254:18:254:19 | a1 : Object[] [[]] : Object | provenance | MaD:13+MaD:14 | | Test.java:249:23:249:58 | new Object[] : Object[] [[]] : Object | Test.java:254:22:254:23 | a2 : Object[] [[]] : Object | provenance | MaD:13+MaD:14 | +| Test.java:249:23:249:58 | new Object[] : Object[] [[]] : Object | Test.java:265:18:265:19 | a1 : Object[] [[]] : Object | provenance | MaD:13+MaD:14 | +| Test.java:249:23:249:58 | new Object[] : Object[] [[]] : Object | Test.java:265:22:265:23 | a2 : Object[] [[]] : Object | provenance | MaD:13+MaD:14 | | Test.java:249:23:249:58 | {...} : Object[] [[]] : Object | Test.java:249:23:249:58 | new Object[] : Object[] [[]] : Object | provenance | | | Test.java:249:38:249:56 | source(...) : Object | Test.java:249:23:249:58 | {...} : Object[] [[]] : Object | provenance | | | Test.java:250:18:250:18 | a : Object[] [[]] : Object | Test.java:251:26:251:26 | a : Object[] [[]] : Object | provenance | | @@ -335,6 +341,8 @@ edges | Test.java:250:18:250:18 | a [Return] : Object[] [[]] : Object | Test.java:250:18:250:18 | a : Object[] [[]] : Object | provenance | MaD:14+MaD:16 | | Test.java:250:18:250:18 | a [Return] : Object[] [[]] : Object | Test.java:254:18:254:19 | a1 : Object[] [[]] : Object | provenance | MaD:14 | | Test.java:250:18:250:18 | a [Return] : Object[] [[]] : Object | Test.java:254:22:254:23 | a2 : Object[] [[]] : Object | provenance | MaD:14 | +| Test.java:250:18:250:18 | a [Return] : Object[] [[]] : Object | Test.java:265:18:265:19 | a1 : Object[] [[]] : Object | provenance | MaD:14 | +| Test.java:250:18:250:18 | a [Return] : Object[] [[]] : Object | Test.java:265:22:265:23 | a2 : Object[] [[]] : Object | provenance | MaD:14 | | Test.java:251:26:251:26 | a : Object[] [[]] : Object | Test.java:251:26:251:29 | ...[...] | provenance | | | Test.java:252:21:252:21 | a [post update] : Object[] [[]] : Object | Test.java:250:18:250:18 | a [Return] : Object[] [[]] : Object | provenance | | | Test.java:252:28:252:46 | source(...) : Object | Test.java:252:21:252:21 | a [post update] : Object[] [[]] : Object | provenance | | @@ -347,10 +355,20 @@ edges | Test.java:261:43:261:61 | source(...) : Object | Test.java:261:33:261:62 | of(...) : Stream [] : Object | provenance | MaD:56 | | Test.java:262:28:262:29 | in : Stream [] : Object | Test.java:262:28:268:18 | collect(...) : Object[] [[]] : Object | provenance | MaD:12 | | Test.java:262:28:262:29 | in : Stream [] : Object | Test.java:264:21:264:21 | x : Object | provenance | MaD:12 | +| Test.java:262:28:262:29 | in : Stream [] : Object | Test.java:265:18:265:19 | a1 : Object[] [[]] : Object | provenance | MaD:12 | +| Test.java:262:28:262:29 | in : Stream [] : Object | Test.java:265:22:265:23 | a2 : Object[] [[]] : Object | provenance | MaD:12 | | Test.java:262:28:268:18 | collect(...) : Object[] [[]] : Object | Test.java:269:18:269:20 | out : Object[] [[]] : Object | provenance | | | Test.java:264:21:264:21 | x : Object | Test.java:264:36:264:36 | x : Object | provenance | | | Test.java:264:29:264:29 | a [post update] : Object[] [[]] : Object | Test.java:264:18:264:18 | a [Return] : Object[] [[]] : Object | provenance | | | Test.java:264:36:264:36 | x : Object | Test.java:264:29:264:29 | a [post update] : Object[] [[]] : Object | provenance | | +| Test.java:265:18:265:19 | a1 : Object[] [[]] : Object | Test.java:267:29:267:30 | a1 : Object[] [[]] : Object | provenance | | +| Test.java:265:22:265:23 | a2 : Object[] [[]] : Object | Test.java:266:29:266:30 | a2 : Object[] [[]] : Object | provenance | | +| Test.java:266:21:266:22 | a1 [post update] : Object[] [[]] : Object | Test.java:265:18:265:19 | a1 [Return] : Object[] [[]] : Object | provenance | | +| Test.java:266:29:266:30 | a2 : Object[] [[]] : Object | Test.java:266:29:266:33 | ...[...] : Object | provenance | | +| Test.java:266:29:266:33 | ...[...] : Object | Test.java:266:21:266:22 | a1 [post update] : Object[] [[]] : Object | provenance | | +| Test.java:267:21:267:22 | a2 [post update] : Object[] [[]] : Object | Test.java:265:22:265:23 | a2 [Return] : Object[] [[]] : Object | provenance | | +| Test.java:267:29:267:30 | a1 : Object[] [[]] : Object | Test.java:267:29:267:33 | ...[...] : Object | provenance | | +| Test.java:267:29:267:33 | ...[...] : Object | Test.java:267:21:267:22 | a2 [post update] : Object[] [[]] : Object | provenance | | | Test.java:269:18:269:20 | out : Object[] [[]] : Object | Test.java:269:18:269:23 | ...[...] | provenance | | | Test.java:273:33:273:62 | of(...) : Stream [] : Object | Test.java:274:13:274:14 | in : Stream [] : Object | provenance | | | Test.java:273:43:273:61 | source(...) : Object | Test.java:273:33:273:62 | of(...) : Stream [] : Object | provenance | MaD:56 | @@ -790,6 +808,16 @@ nodes | Test.java:264:21:264:21 | x : Object | semmle.label | x : Object | | Test.java:264:29:264:29 | a [post update] : Object[] [[]] : Object | semmle.label | a [post update] : Object[] [[]] : Object | | Test.java:264:36:264:36 | x : Object | semmle.label | x : Object | +| Test.java:265:18:265:19 | a1 : Object[] [[]] : Object | semmle.label | a1 : Object[] [[]] : Object | +| Test.java:265:18:265:19 | a1 [Return] : Object[] [[]] : Object | semmle.label | a1 [Return] : Object[] [[]] : Object | +| Test.java:265:22:265:23 | a2 : Object[] [[]] : Object | semmle.label | a2 : Object[] [[]] : Object | +| Test.java:265:22:265:23 | a2 [Return] : Object[] [[]] : Object | semmle.label | a2 [Return] : Object[] [[]] : Object | +| Test.java:266:21:266:22 | a1 [post update] : Object[] [[]] : Object | semmle.label | a1 [post update] : Object[] [[]] : Object | +| Test.java:266:29:266:30 | a2 : Object[] [[]] : Object | semmle.label | a2 : Object[] [[]] : Object | +| Test.java:266:29:266:33 | ...[...] : Object | semmle.label | ...[...] : Object | +| Test.java:267:21:267:22 | a2 [post update] : Object[] [[]] : Object | semmle.label | a2 [post update] : Object[] [[]] : Object | +| Test.java:267:29:267:30 | a1 : Object[] [[]] : Object | semmle.label | a1 : Object[] [[]] : Object | +| Test.java:267:29:267:33 | ...[...] : Object | semmle.label | ...[...] : Object | | Test.java:269:18:269:20 | out : Object[] [[]] : Object | semmle.label | out : Object[] [[]] : Object | | Test.java:269:18:269:23 | ...[...] | semmle.label | ...[...] | | Test.java:273:33:273:62 | of(...) : Stream [] : Object | semmle.label | of(...) : Stream [] : Object | @@ -1010,6 +1038,8 @@ subpaths | Test.java:208:34:208:36 | out : Object[] [[]] : Object | Test.java:16:27:16:35 | array : Object[] [[]] : Object | Test.java:16:47:16:54 | ...[...] : Object | Test.java:208:18:208:37 | getArrayElement(...) | | Test.java:215:29:215:31 | out : List [] : Object | Test.java:18:22:18:35 | it : List [] : Object | Test.java:18:47:18:66 | next(...) : Object | Test.java:215:18:215:32 | getElement(...) | | Test.java:262:28:262:29 | in : Stream [] : Object | Test.java:264:21:264:21 | x : Object | Test.java:264:18:264:18 | a [Return] : Object[] [[]] : Object | Test.java:262:28:268:18 | collect(...) : Object[] [[]] : Object | +| Test.java:262:28:262:29 | in : Stream [] : Object | Test.java:265:18:265:19 | a1 : Object[] [[]] : Object | Test.java:265:22:265:23 | a2 [Return] : Object[] [[]] : Object | Test.java:262:28:268:18 | collect(...) : Object[] [[]] : Object | +| Test.java:262:28:262:29 | in : Stream [] : Object | Test.java:265:22:265:23 | a2 : Object[] [[]] : Object | Test.java:265:18:265:19 | a1 [Return] : Object[] [[]] : Object | Test.java:262:28:268:18 | collect(...) : Object[] [[]] : Object | | Test.java:289:29:289:31 | out : Stream [] : Object | Test.java:17:22:17:38 | s : Stream [] : Object | Test.java:17:50:17:68 | next(...) : Object | Test.java:289:18:289:32 | getElement(...) | | Test.java:319:29:319:31 | out : Stream [] : Object | Test.java:17:22:17:38 | s : Stream [] : Object | Test.java:17:50:17:68 | next(...) : Object | Test.java:319:18:319:32 | getElement(...) | | Test.java:335:29:335:31 | out : Stream [] : Object | Test.java:17:22:17:38 | s : Stream [] : Object | Test.java:17:50:17:68 | next(...) : Object | Test.java:335:18:335:32 | getElement(...) | 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/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/query-tests/security/CWE-927/ImplicitPendingIntentsTest.expected b/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.expected index 48de9172b36..8ec8033d086 100644 --- a/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.expected +++ b/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.expected @@ -1,2 +1,2 @@ -failures testFailures +failures diff --git a/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.java b/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.java index 746c9ca83dc..80f66149221 100644 --- a/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.java +++ b/java/ql/test/query-tests/security/CWE-927/ImplicitPendingIntentsTest.java @@ -32,8 +32,8 @@ public class ImplicitPendingIntentsTest { PendingIntent pi = PendingIntent.getActivity(ctx, 0, baseIntent, 0); Intent fwdIntent = new Intent(); fwdIntent.putExtra("fwdIntent", pi); + ctx.startActivities(new Intent[] {fwdIntent}); // $ MISSING: hasImplicitPendingIntent ctx.startActivity(fwdIntent); // $hasImplicitPendingIntent - ctx.startActivities(new Intent[] {fwdIntent}); // $hasImplicitPendingIntent ctx.startService(fwdIntent); // Safe ctx.sendBroadcast(fwdIntent); // $hasImplicitPendingIntent 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/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/swift/ql/integration-tests/osx-only/autobuilder/no-xcode-with-spm/x.swift b/javascript/ql/integration-tests/no-types/javascript.expected similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/no-xcode-with-spm/x.swift 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..301a52e0d9d 100644 --- a/javascript/ql/lib/CHANGELOG.md +++ b/javascript/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.1.3 + +No user-facing changes. + ## 1.1.2 No user-facing changes. diff --git a/javascript/ql/lib/change-notes/2024-09-03-outdated-deprecations.md b/javascript/ql/lib/change-notes/2024-09-03-outdated-deprecations.md new file mode 100644 index 00000000000..cb356514160 --- /dev/null +++ b/javascript/ql/lib/change-notes/2024-09-03-outdated-deprecations.md @@ -0,0 +1,10 @@ +--- +category: breaking +--- +* 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. 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/codeql-pack.release.yml b/javascript/ql/lib/codeql-pack.release.yml index 53ab127707f..35e710ab1bf 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: 1.1.3 diff --git a/javascript/ql/lib/qlpack.yml b/javascript/ql/lib/qlpack.yml index 0a9adfd363a..66933738bce 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: 1.1.4-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/NodeJS.qll b/javascript/ql/lib/semmle/javascript/NodeJS.qll index 221cee084b6..823ddae93c4 100644 --- a/javascript/ql/lib/semmle/javascript/NodeJS.qll +++ b/javascript/ql/lib/semmle/javascript/NodeJS.qll @@ -295,6 +295,15 @@ private predicate isRequire(DataFlow::Node nd) { isCreateRequire(call.getCallee().flow()) and nd = call.flow() ) + or + // `$.require('underscore');`. + // NPM as supported in [XSJS files](https://www.npmjs.com/package/@sap/async-xsjs#npm-packages-support). + exists(MethodCallExpr require | + nd.getFile().getExtension() = ["xsjs", "xsjslib"] and + require.getCalleeName() = "require" and + require.getReceiver().(GlobalVarAccess).getName() = "$" and + nd = require.getCallee().flow() + ) } /** 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/lib/semmle/javascript/frameworks/helmet/Helmet.Required.Setting.model.yml b/javascript/ql/lib/semmle/javascript/frameworks/helmet/Helmet.Required.Setting.model.yml index ab01ec5206d..a8c14532152 100644 --- a/javascript/ql/lib/semmle/javascript/frameworks/helmet/Helmet.Required.Setting.model.yml +++ b/javascript/ql/lib/semmle/javascript/frameworks/helmet/Helmet.Required.Setting.model.yml @@ -1,6 +1,6 @@ extensions: - addsTo: - pack: codeql/javascript-queries + pack: codeql/javascript-all extensible: requiredHelmetSecuritySetting data: - ["frameguard"] diff --git a/javascript/ql/lib/semmle/javascript/frameworks/helmet/Helmet.qll b/javascript/ql/lib/semmle/javascript/frameworks/helmet/Helmet.qll new file mode 100644 index 00000000000..375e87e9646 --- /dev/null +++ b/javascript/ql/lib/semmle/javascript/frameworks/helmet/Helmet.qll @@ -0,0 +1,41 @@ +/** + * Provides classes for working with Helmet + */ + +private import javascript + +/** + * A write to a property of a route handler from the "helmet" module. + */ +class HelmetProperty extends DataFlow::Node instanceof DataFlow::PropWrite { + ExpressLibraries::HelmetRouteHandler helmet; + + HelmetProperty() { + this = helmet.(DataFlow::CallNode).getAnArgument().getALocalSource().getAPropertyWrite() + } + + /** + * Gets the route handler associated to this property. + */ + ExpressLibraries::HelmetRouteHandler getHelmet() { result = helmet } + + /** + * Gets the boolean value of this property, if it may evaluate to a `Boolean`. + */ + predicate isFalse() { DataFlow::PropWrite.super.getRhs().mayHaveBooleanValue(false) } + + /** + * Gets the name of the `HelmetProperty`. + */ + string getName() { result = DataFlow::PropWrite.super.getPropertyName() } + + /** + * read from data extensions to allow enforcing custom settings + */ + predicate isImportantSecuritySetting() { requiredHelmetSecuritySetting(this.getName()) } +} + +/** + * defaults are located in `javascript/ql/lib/semmle/frameworks/helmet/Helmet.Required.Setting.model.yml` + */ +extensible predicate requiredHelmetSecuritySetting(string name); diff --git a/javascript/ql/src/CHANGELOG.md b/javascript/ql/src/CHANGELOG.md index af1e040cc44..a5f03a2f00e 100644 --- a/javascript/ql/src/CHANGELOG.md +++ b/javascript/ql/src/CHANGELOG.md @@ -1,3 +1,11 @@ +## 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-693/CUSTOMIZING.md b/javascript/ql/src/Security/CWE-693/CUSTOMIZING.md index 34ae2851a85..7eeb9e9b19a 100644 --- a/javascript/ql/src/Security/CWE-693/CUSTOMIZING.md +++ b/javascript/ql/src/Security/CWE-693/CUSTOMIZING.md @@ -24,7 +24,7 @@ A suitable [model pack](https://docs.github.com/en/code-security/codeql-cli/usin name: my-org/javascript-helmet-insecure-config-model-pack version: 1.0.0 extensionTargets: - codeql/java-all: '*' + codeql/javascript-all: '*' dataExtensions: - models/**/*.yml ``` diff --git a/javascript/ql/src/Security/CWE-693/InsecureHelmet.ql b/javascript/ql/src/Security/CWE-693/InsecureHelmet.ql index 8f837669ffc..66652e9e58a 100644 --- a/javascript/ql/src/Security/CWE-693/InsecureHelmet.ql +++ b/javascript/ql/src/Security/CWE-693/InsecureHelmet.ql @@ -12,30 +12,8 @@ */ import javascript -import DataFlow import semmle.javascript.frameworks.ExpressModules - -class HelmetProperty extends DataFlow::Node instanceof DataFlow::PropWrite { - ExpressLibraries::HelmetRouteHandler helmet; - - HelmetProperty() { - this = helmet.(DataFlow::CallNode).getAnArgument().getALocalSource().getAPropertyWrite() - } - - ExpressLibraries::HelmetRouteHandler getHelmet() { result = helmet } - - predicate isFalse() { DataFlow::PropWrite.super.getRhs().mayHaveBooleanValue(false) } - - string getName() { result = DataFlow::PropWrite.super.getPropertyName() } - - predicate isImportantSecuritySetting() { - // read from data extensions to allow enforcing custom settings - // defaults are located in javascript/ql/lib/semmle/frameworks/helmet/Helmet.Required.Setting.model.yml - requiredHelmetSecuritySetting(this.getName()) - } -} - -extensible predicate requiredHelmetSecuritySetting(string name); +import semmle.javascript.frameworks.helmet.Helmet from HelmetProperty helmetProperty, ExpressLibraries::HelmetRouteHandler helmet where 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/codeql-pack.release.yml b/javascript/ql/src/codeql-pack.release.yml index 1a19084be3f..53ab127707f 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.1.2 diff --git a/javascript/ql/src/qlpack.yml b/javascript/ql/src/qlpack.yml index 9932097414b..30fd61f190b 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.1.3-dev groups: - javascript - queries diff --git a/javascript/ql/test/query-tests/Security/CWE-326/InsufficientKeySize.expected b/javascript/ql/test/query-tests/Security/CWE-326/InsufficientKeySize.expected index 95bb8d45832..323e5b24875 100644 --- a/javascript/ql/test/query-tests/Security/CWE-326/InsufficientKeySize.expected +++ b/javascript/ql/test/query-tests/Security/CWE-326/InsufficientKeySize.expected @@ -9,3 +9,4 @@ | tst.js:35:13:35:43 | crypto. ... an(512) | Creation of an asymmetric key uses 512 bits, which is below 2048 and considered breakable. | | tst.js:39:13:39:33 | new Nod ... : 512}) | Creation of an asymmetric RSA key uses 512 bits, which is below 2048 and considered breakable. | | tst.js:43:1:43:31 | key.gen ... 65537) | Creation of an asymmetric RSA key uses 512 bits, which is below 2048 and considered breakable. | +| tst.xsjs:3:14:3:71 | crypto. ... 1024 }) | Creation of an asymmetric RSA key uses 1024 bits, which is below 2048 and considered breakable. | diff --git a/javascript/ql/test/query-tests/Security/CWE-326/tst.xsjs b/javascript/ql/test/query-tests/Security/CWE-326/tst.xsjs new file mode 100644 index 00000000000..d5e5051af66 --- /dev/null +++ b/javascript/ql/test/query-tests/Security/CWE-326/tst.xsjs @@ -0,0 +1,5 @@ +const crypto = $.require("crypto"); + +const bad1 = crypto.generateKeyPairSync("rsa", { modulusLength: 1024 }); // NOT OK + +const good1 = crypto.generateKeyPairSync("rsa", { modulusLength: 4096 }); // OK 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/BUILD.bazel b/misc/bazel/BUILD.bazel index d5c15743903..c3670b75c94 100644 --- a/misc/bazel/BUILD.bazel +++ b/misc/bazel/BUILD.bazel @@ -1,13 +1,3 @@ -load("@buildifier_prebuilt//:rules.bzl", "buildifier") - -buildifier( - name = "buildifier", - exclude_patterns = [ - "./.git/*", - ], - lint_mode = "fix", -) - sh_library( name = "sh_runfiles", srcs = ["runfiles.sh"], diff --git a/misc/bazel/buildifier/BUILD.bazel b/misc/bazel/buildifier/BUILD.bazel new file mode 100644 index 00000000000..3ccdcda5f12 --- /dev/null +++ b/misc/bazel/buildifier/BUILD.bazel @@ -0,0 +1,9 @@ +load("@buildifier_prebuilt//:rules.bzl", "buildifier") + +buildifier( + name = "buildifier", + exclude_patterns = [ + "./.git/*", + ], + lint_mode = "fix", +) 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/canonical-case/MiXeDcAsE.swifT b/misc/bazel/semmle_code_stub/buildutils-internal/BUILD.bazel similarity index 100% rename from swift/ql/integration-tests/osx-only/canonical-case/MiXeDcAsE.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/ripunzip/install.sh b/misc/ripunzip/install.sh index 2fb4d48ed6c..d9ee6dda1cb 100755 --- a/misc/ripunzip/install.sh +++ b/misc/ripunzip/install.sh @@ -2,7 +2,7 @@ set -eu -. misc/bazel/runfiles.sh +source misc/bazel/runfiles.sh 2>/dev/null || source external/ql~/misc/bazel/runfiles.sh dest="${2:-$HOME/.local/bin}" 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..66b29a94c27 100644 --- a/misc/suite-helpers/CHANGELOG.md +++ b/misc/suite-helpers/CHANGELOG.md @@ -1,3 +1,7 @@ +## 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/codeql-pack.release.yml b/misc/suite-helpers/codeql-pack.release.yml index 42da17b3841..8033d980afa 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.6 diff --git a/misc/suite-helpers/qlpack.yml b/misc/suite-helpers/qlpack.yml index baedc3f13a1..0e10bf7cc48 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.7-dev groups: shared warnOnImplicitThis: true diff --git a/python/ql/lib/CHANGELOG.md b/python/ql/lib/CHANGELOG.md index 87cbf5bfda1..588534dbe81 100644 --- a/python/ql/lib/CHANGELOG.md +++ b/python/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.6 + +No user-facing changes. + ## 1.0.5 ### Minor Analysis Improvements diff --git a/python/ql/lib/change-notes/2024-09-03-outdated-deprecations.md b/python/ql/lib/change-notes/2024-09-03-outdated-deprecations.md new file mode 100644 index 00000000000..cb8f4c3fbbc --- /dev/null +++ b/python/ql/lib/change-notes/2024-09-03-outdated-deprecations.md @@ -0,0 +1,9 @@ +--- +category: breaking +--- +* 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. \ No newline at end of file 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/codeql-pack.release.yml b/python/ql/lib/codeql-pack.release.yml index 42da17b3841..8033d980afa 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: 1.0.6 diff --git a/python/ql/lib/qlpack.yml b/python/ql/lib/qlpack.yml index 81d09c13b5d..a5976074c0e 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: 1.0.7-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..88f9c1e5fa0 100644 --- a/python/ql/src/CHANGELOG.md +++ b/python/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 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-08-27-sensitive-certificate.md b/python/ql/src/change-notes/2024-08-27-sensitive-certificate.md new file mode 100644 index 00000000000..eee82db8cde --- /dev/null +++ b/python/ql/src/change-notes/2024-08-27-sensitive-certificate.md @@ -0,0 +1,4 @@ +--- +category: minorAnalysis +--- +* 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. \ No newline at end of file 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/codeql-pack.release.yml b/python/ql/src/codeql-pack.release.yml index 2ac15439f56..75430e73d1c 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.0 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..5352607aa77 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.1-dev groups: - python - queries 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/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/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/extractor/Cargo.lock b/ruby/extractor/Cargo.lock index 95f32d9b610..d32d1bd6981 100644 Binary files a/ruby/extractor/Cargo.lock and b/ruby/extractor/Cargo.lock differ diff --git a/ruby/extractor/Cargo.toml b/ruby/extractor/Cargo.toml index 39310785ec3..89e0d3cf9db 100644 --- a/ruby/extractor/Cargo.toml +++ b/ruby/extractor/Cargo.toml @@ -7,20 +7,17 @@ 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"] } rayon = "1.5.0" regex = "1.7.1" encoding = "0.2" -lazy_static = "1.4.0" +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" } diff --git a/ruby/extractor/codeql-extractor-fake-crate/Cargo.toml b/ruby/extractor/codeql-extractor-fake-crate/Cargo.toml index d51d64a3349..d7d1e0f37ab 100644 --- a/ruby/extractor/codeql-extractor-fake-crate/Cargo.toml +++ b/ruby/extractor/codeql-extractor-fake-crate/Cargo.toml @@ -7,7 +7,7 @@ authors = ["GitHub"] [dependencies] flate2 = "1.0" globset = "0.4" -tree-sitter = ">= 0.22.6" +tree-sitter = ">= 0.23.0" tracing = "0.1" tracing-subscriber = { version = "0.3.3", features = ["env-filter"] } rayon = "1.5.0" @@ -24,5 +24,3 @@ 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/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..d0d039c5bc6 100644 --- a/ruby/ql/lib/CHANGELOG.md +++ b/ruby/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.6 + +No user-facing changes. + ## 1.0.5 No user-facing changes. diff --git a/ruby/ql/lib/change-notes/2024-09-03-outdated-deprecations.md b/ruby/ql/lib/change-notes/2024-09-03-outdated-deprecations.md new file mode 100644 index 00000000000..7f7c3258fb8 --- /dev/null +++ b/ruby/ql/lib/change-notes/2024-09-03-outdated-deprecations.md @@ -0,0 +1,8 @@ +--- +category: breaking +--- +* 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/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/codeql-pack.release.yml b/ruby/ql/lib/codeql-pack.release.yml index 42da17b3841..8033d980afa 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: 1.0.6 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/DataFlowDispatch.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowDispatch.qll index f4b93490020..268c289259e 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowDispatch.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowDispatch.qll @@ -563,7 +563,11 @@ private module Cached { THashSplatArgumentPosition() or TSynthHashSplatArgumentPosition() or TSplatArgumentPosition(int pos) { exists(Call c | c.getArgument(pos) instanceof SplatExpr) } or - TSynthSplatArgumentPosition() or + TSynthSplatArgumentPosition(int actualSplatPos) { + actualSplatPos = -1 // represents no actual splat + or + exists(Call c | c.getArgument(actualSplatPos) instanceof SplatExpr) + } or TAnyArgumentPosition() or TAnyKeywordArgumentPosition() @@ -590,11 +594,15 @@ private module Cached { THashSplatParameterPosition() or TSynthHashSplatParameterPosition() or TSplatParameterPosition(int pos) { - pos = 0 + pos = 0 // needed for flow summaries or exists(Parameter p | p.getPosition() = pos and p instanceof SplatParameter) } or - TSynthSplatParameterPosition() or + TSynthSplatParameterPosition(int actualSplatPos) { + actualSplatPos = -1 // represents no actual splat + or + exists(Callable c | c.getParameter(actualSplatPos) instanceof SplatParameter) + } or TAnyParameterPosition() or TAnyKeywordParameterPosition() } @@ -1383,8 +1391,14 @@ class ParameterPosition extends TParameterPosition { /** Holds if this position represents a splat parameter at position `n`. */ predicate isSplat(int n) { this = TSplatParameterPosition(n) } - /** Holds if this position represents a synthetic splat parameter. */ - predicate isSynthSplat() { this = TSynthSplatParameterPosition() } + /** + * Holds if this position represents a synthetic splat parameter. + * + * `actualSplatPos` indicates the position of the (unique) actual splat + * parameter belonging to the same method, with `-1` representing no actual + * splat parameter. + */ + predicate isSynthSplat(int actualSplatPos) { this = TSynthSplatParameterPosition(actualSplatPos) } /** * Holds if this position represents any parameter, except `self` parameters. This @@ -1419,7 +1433,11 @@ class ParameterPosition extends TParameterPosition { or exists(int pos | this.isSplat(pos) and result = "* (position " + pos + ")") or - this.isSynthSplat() and result = "synthetic *" + exists(int actualSplatPos, string suffix | + this.isSynthSplat(actualSplatPos) and + result = "synthetic *" + suffix and + if actualSplatPos = -1 then suffix = "" else suffix = " (actual at " + actualSplatPos + ")" + ) } } @@ -1458,8 +1476,14 @@ class ArgumentPosition extends TArgumentPosition { /** Holds if this position represents a splat argument at position `n`. */ predicate isSplat(int n) { this = TSplatArgumentPosition(n) } - /** Holds if this position represents a synthetic splat argument. */ - predicate isSynthSplat() { this = TSynthSplatArgumentPosition() } + /** + * Holds if this position represents a synthetic splat argument. + * + * `actualSplatPos` indicates the position of the (unique) actual splat + * argument belonging to the same call, with `-1` representing no actual + * splat argument. + */ + predicate isSynthSplat(int actualSplatPos) { this = TSynthSplatArgumentPosition(actualSplatPos) } /** Gets a textual representation of this position. */ string toString() { @@ -1483,7 +1507,11 @@ class ArgumentPosition extends TArgumentPosition { or exists(int pos | this.isSplat(pos) and result = "* (position " + pos + ")") or - this.isSynthSplat() and result = "synthetic *" + exists(int actualSplatPos, string suffix | + this.isSynthSplat(actualSplatPos) and + result = "synthetic *" + suffix and + if actualSplatPos = -1 then suffix = "" else suffix = " (actual at " + actualSplatPos + ")" + ) } } @@ -1517,19 +1545,29 @@ predicate parameterMatch(ParameterPosition ppos, ArgumentPosition apos) { exists(string name | ppos.isKeyword(name) and apos.isKeyword(name)) or (ppos.isHashSplat() or ppos.isSynthHashSplat()) and - (apos.isHashSplat() or apos.isSynthHashSplat()) + (apos.isHashSplat() or apos.isSynthHashSplat()) and + // prevent synthetic hash-splat parameters from matching synthetic hash-splat + // arguments when direct keyword matching is possible + not (ppos.isSynthHashSplat() and apos.isSynthHashSplat()) or exists(int pos | ( ppos.isSplat(pos) or - ppos.isSynthSplat() and pos = 0 + ppos.isSynthSplat(_) and + pos = 0 ) and ( apos.isSplat(pos) or - apos.isSynthSplat() and pos = 0 + apos.isSynthSplat(_) and pos = 0 ) + ) and + // prevent synthetic splat parameters from matching synthetic splat arguments + // when direct positional matching is possible + not exists(int actualSplatPos | + ppos.isSynthSplat(actualSplatPos) and + apos.isSynthSplat(actualSplatPos) ) or ppos.isAny() and argumentPositionIsNotSelf(apos) 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 ec58536abe1..20db26be92f 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPrivate.qll @@ -195,7 +195,9 @@ private class Argument extends CfgNodes::ExprCfgNode { not this.getExpr().(Pair).getKey().getConstantValue().isSymbol(_) and not this.getExpr() instanceof HashSplatExpr and not this.getExpr() instanceof SplatExpr and - arg.isPositional(i) + arg.isPositional(i) and + // There are no splat arguments before the positional argument + not splatArgumentAt(call, any(int j | j < i)) ) or exists(CfgNodes::ExprNodes::PairCfgNode p | @@ -217,7 +219,9 @@ private class Argument extends CfgNodes::ExprCfgNode { exists(int pos | this = call.getArgument(pos) and this.getExpr() instanceof SplatExpr and - arg.isSplat(pos) + arg.isSplat(pos) and + // There are no earlier splat arguments + not splatArgumentAt(call, any(int j | j < pos)) ) or this = call.getAnArgument() and @@ -432,7 +436,7 @@ private predicate splatParameterAt(Callable c, int pos) { } private predicate splatArgumentAt(CfgNodes::ExprNodes::CallCfgNode c, int pos) { - exists(Argument arg, ArgumentPosition apos | arg.isArgumentOf(c, apos) and apos.isSplat(pos)) + c.getArgument(pos).getExpr() instanceof SplatExpr } /** A collection of cached types and predicates to be evaluated in the same stage. */ @@ -661,8 +665,8 @@ private module Cached { name = [input, output].regexpFind("(?<=(^|\\.)Field\\[)[^\\]]+(?=\\])", _, _).trim() ) } or - TSplatContent(int i, Boolean shifted) { i in [0 .. 10] } or - THashSplatContent(ConstantValue::ConstantSymbolValue cv) or + deprecated TSplatContent(int i, Boolean shifted) { i in [0 .. 10] } or + deprecated THashSplatContent(ConstantValue::ConstantSymbolValue cv) or TCapturedVariableContent(VariableCapture::CapturedVariable v) or // Only used by type-tracking TAttributeName(string name) { name = any(SetterMethodCall c).getTargetName() } @@ -686,29 +690,16 @@ private module Cached { TUnknownElementContentApprox() or TKnownIntegerElementContentApprox() or TKnownElementContentApprox(string approx) { approx = approxKnownElementIndex(_) } or - TSplatContentApprox(Boolean shifted) or - THashSplatContentApprox(string approx) { approx = approxKnownElementIndex(_) } or TNonElementContentApprox(Content c) { not c instanceof Content::ElementContent } or TCapturedVariableContentApprox(VariableCapture::CapturedVariable v) cached newtype TDataFlowType = TLambdaDataFlowType(Callable c) { c = any(LambdaSelfReferenceNode n).getCallable() } or - // In order to reduce the set of cons-candidates, we annotate all implicit (hash) splat - // creations with the name of the method that they are passed into. This includes - // array/hash literals as well (where the name is simply `[]`), because of how they - // are modeled (see `Array.qll` and `Hash.qll`). - TSynthHashSplatArgumentType(string methodName) { - methodName = any(SynthHashSplatArgumentNode n).getMethodName() - } or - TSynthSplatArgumentType(string methodName) { - methodName = any(SynthSplatArgumentNode n).getMethodName() - } or TUnknownDataFlowType() } -class TElementContent = - TKnownElementContent or TUnknownElementContent or TSplatContent or THashSplatContent; +class TElementContent = TKnownElementContent or TUnknownElementContent; import Cached @@ -933,7 +924,12 @@ private module ParameterNodes { override predicate isParameterOf(DataFlowCallable c, ParameterPosition pos) { exists(Callable callable | callable = c.asCfgScope() | - exists(int i | pos.isPositional(i) and callable.getParameter(i) = parameter | + exists(int i | + pos.isPositional(i) and + callable.getParameter(i) = parameter and + // There are no splat parameters before the positional parameter + not splatParameterAt(callable, any(int m | m < i)) + | parameter instanceof SimpleParameter or parameter instanceof OptionalParameter @@ -952,7 +948,9 @@ private module ParameterNodes { parameter = callable.getParameter(n).(SplatParameter) and pos.isSplat(n) and // There are no positional parameters after the splat - not exists(SimpleParameter p, int m | m > n | p = callable.getParameter(m)) + not exists(SimpleParameter p, int m | m > n | p = callable.getParameter(m)) and + // There are no earlier splat parameters + not splatParameterAt(callable, any(int m | m < n)) ) or parameter = callable.getAParameter().(BlockParameter) and @@ -1123,18 +1121,6 @@ private module ParameterNodes { * * by adding read steps out of the synthesized parameter node to the relevant * keyword parameters. - * - * In order to avoid redundancy (and improve performance) in cases like - * - * ```rb - * foo(p1: taint(1), p2: taint(2)) - * ``` - * - * where direct keyword matching is possible, we use a special `HashSplatContent` - * (instead of reusing `KnownElementContent`) when we construct a synthesized hash - * splat argument (`SynthHashSplatArgumentNode`) at the call site, and then only - * add read steps out of this node for actual hash-splat arguments (which will use - * a normal `KnownElementContent`). */ class SynthHashSplatParameterNode extends ParameterNodeImpl, TSynthHashSplatParameterNode { private DataFlowCallable callable; @@ -1188,18 +1174,6 @@ private module ParameterNodes { * by adding read steps out of the synthesized parameter node to the relevant * positional parameters. * - * In order to avoid redundancy (and improve performance) in cases like - * - * ```rb - * foo(a, b, c) - * ``` - * - * where direct positional matching is possible, we use a special `SplatContent` - * (instead of reusing `KnownElementContent`) when we construct a synthesized - * splat argument (`SynthSplatArgumentNode`) at the call site, and then only - * add read steps out of this node for actual splat arguments (which will use - * `KnownElementContent` or `TSplatContent(_, true)`). - * * We don't yet correctly handle cases where a positional argument follows the * splat argument, e.g. in * @@ -1217,12 +1191,8 @@ private module ParameterNodes { /** Holds if a read-step should be added into parameter `p`. */ predicate readInto(ParameterNode p, ContentSet c) { exists(int n | - isParameterNode(p, callable, any(ParameterPosition pos | pos.isPositional(n))) and - not exists(int i | splatParameterAt(callable.asCfgScope(), i) and i < n) + isParameterNode(p, callable, any(ParameterPosition pos | pos.isPositional(n))) | - // Important: do not include `TSplatContent(_, false)` here, as normal parameter matching is possible - c = getSplatContent(n, true) - or c = getArrayContent(n) or c.isSingleton(TUnknownElementContent()) @@ -1232,7 +1202,13 @@ private module ParameterNodes { final override Parameter getParameter() { none() } final override predicate isParameterOf(DataFlowCallable c, ParameterPosition pos) { - c = callable and pos.isSynthSplat() + c = callable and + exists(int actualSplat | pos.isSynthSplat(actualSplat) | + exists(TSynthSplatParameterShiftNode(c, actualSplat, _)) + or + not exists(TSynthSplatParameterShiftNode(c, _, _)) and + actualSplat = -1 + ) } final override CfgScope getCfgScope() { result = callable.asCfgScope() } @@ -1271,11 +1247,7 @@ private module ParameterNodes { */ predicate readFrom(SynthSplatParameterNode synthSplat, ContentSet cs) { synthSplat.isParameterOf(callable, _) and - ( - cs = getSplatContent(pos + splatPos, _) - or - cs = getArrayContent(pos + splatPos) - ) + cs = getArrayContent(pos + splatPos) } /** @@ -1454,24 +1426,7 @@ module ArgumentNodes { not cv.isSymbol(_) ) | - if call instanceof CfgNodes::ExprNodes::HashLiteralCfgNode - then - /* - * Needed for cases like - * - * ```rb - * hash = { a: taint, b: safe } - * - * def foo(a:, b:) - * sink(a) - * end - * - * foo(**hash) - * ``` - */ - - c.isSingleton(Content::getElementContent(cv)) - else c.isSingleton(THashSplatContent(cv)) + c.isSingleton(Content::getElementContent(cv)) ) } @@ -1506,31 +1461,10 @@ module ArgumentNodes { * `call`, into a synthetic splat argument. */ predicate synthSplatStore(CfgNodes::ExprNodes::CallCfgNode call, Argument arg, ContentSet c) { - exists(int n | - exists(ArgumentPosition pos | - arg.isArgumentOf(call, pos) and - pos.isPositional(n) and - not exists(int i | splatArgumentAt(call, i) and i < n) - ) - | - if call instanceof CfgNodes::ExprNodes::ArrayLiteralCfgNode - then - /* - * Needed for cases like - * - * ```rb - * arr = [taint, safe] - * - * def foo(a, b) - * sink(a) - * end - * - * foo(*arr) - * ``` - */ - - c = getArrayContent(n) - else c = getSplatContent(n, false) + exists(int n, ArgumentPosition pos | + arg.isArgumentOf(call, pos) and + pos.isPositional(n) and + c = getArrayContent(n) ) } @@ -1552,7 +1486,14 @@ module ArgumentNodes { override predicate sourceArgumentOf(CfgNodes::ExprNodes::CallCfgNode call, ArgumentPosition pos) { call = call_ and - pos.isSynthSplat() + exists(int actualSplat | pos.isSynthSplat(actualSplat) | + any(SynthSplatArgumentShiftNode shift | + shift = TSynthSplatArgumentShiftNode(_, actualSplat, _) + ).storeInto(this, _) + or + not any(SynthSplatArgumentShiftNode shift).storeInto(this, _) and + actualSplat = -1 + ) } override string toStringImpl() { result = "synthetic splat argument" } @@ -1583,8 +1524,6 @@ module ArgumentNodes { predicate readFrom(Node splatArg, ContentSet cs) { splatArg.asExpr().(Argument).isArgumentOf(c, any(ArgumentPosition p | p.isSplat(splatPos))) and ( - cs = getSplatContent(n - splatPos, _) - or cs = getArrayContent(n - splatPos) or n = -1 and @@ -1599,7 +1538,7 @@ module ArgumentNodes { predicate storeInto(SynthSplatArgumentNode synthSplat, ContentSet cs) { synthSplat = TSynthSplatArgumentNode(c) and ( - cs = getSplatContent(n, true) + cs = getArrayContent(n) or n = -1 and cs.isSingleton(TUnknownElementContent()) @@ -1813,10 +1752,6 @@ private ContentSet getArrayContent(int n) { ) } -private ContentSet getSplatContent(int n, boolean adjusted) { - result.isSingleton(TSplatContent(n, adjusted)) -} - /** * Subset of `storeStep` that should be shared with type-tracking. */ @@ -1977,13 +1912,8 @@ DataFlowType getNodeType(Node n) { result = TLambdaDataFlowType(c) ) or - result = TSynthHashSplatArgumentType(n.(SynthHashSplatArgumentNode).getMethodName()) - or - result = TSynthSplatArgumentType(n.(SynthSplatArgumentNode).getMethodName()) - or not n instanceof LambdaSelfReferenceNode and not mustHaveLambdaType(n, _) and - not n instanceof SynthHashSplatOrSplatArgumentNode and result = TUnknownDataFlowType() } @@ -2209,17 +2139,6 @@ class ContentApprox extends TContentApprox { result = "approximated element " + approx ) or - exists(boolean shifted, string s | - this = TSplatContentApprox(shifted) and - (if shifted = true then s = " (shifted)" else s = "") and - result = "approximated splat position" + s - ) - or - exists(string s | - this = THashSplatContentApprox(s) and - result = "approximated hash-splat position " + s - ) - or exists(Content c | this = TNonElementContentApprox(c) and result = c.toString() @@ -2259,13 +2178,6 @@ ContentApprox getContentApprox(Content c) { result = TKnownElementContentApprox(approxKnownElementIndex(c.(Content::KnownElementContent).getIndex())) or - exists(boolean shifted | - c = TSplatContent(_, shifted) and - result = TSplatContentApprox(shifted) - ) - or - result = THashSplatContentApprox(approxKnownElementIndex(c.(Content::HashSplatContent).getKey())) - or result = TNonElementContentApprox(c) } diff --git a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPublic.qll b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPublic.qll index 33ac82448a9..c56501bad3e 100644 --- a/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPublic.qll +++ b/ruby/ql/lib/codeql/ruby/dataflow/internal/DataFlowPublic.qll @@ -586,7 +586,7 @@ module Content { * * we have an implicit splat argument containing `[1, 2, 3]`. */ - class SplatContent extends ElementContent, TSplatContent { + deprecated class SplatContent extends Content, TSplatContent { private int i; private boolean shifted; @@ -629,7 +629,7 @@ module Content { * * we have an implicit hash-splat argument containing `{:a => 1, :b => 2, :c => 3}`. */ - class HashSplatContent extends ElementContent, THashSplatContent { + deprecated class HashSplatContent extends Content, THashSplatContent { private ConstantValue::ConstantSymbolValue cv; HashSplatContent() { this = THashSplatContent(cv) } @@ -797,20 +797,13 @@ class ContentSet extends TContentSet { private Content getAnElementReadContent() { exists(Content::KnownElementContent c | this.isKnownOrUnknownElement(c) | result = c or - result = TSplatContent(c.getIndex().getInt(), _) or - result = THashSplatContent(c.getIndex()) or result = TUnknownElementContent() ) or exists(int lower, boolean includeUnknown | this = TElementLowerBoundContent(lower, includeUnknown) | - exists(int i | - result.(Content::KnownElementContent).getIndex().isInt(i) or - result = TSplatContent(i, _) - | - i >= lower - ) + exists(int i | result.(Content::KnownElementContent).getIndex().isInt(i) | i >= lower) or includeUnknown = true and result = TUnknownElementContent() @@ -821,11 +814,6 @@ class ContentSet extends TContentSet { | type = result.(Content::KnownElementContent).getIndex().getValueType() or - type = "int" and - result instanceof Content::SplatContent - or - type = result.(Content::HashSplatContent).getKey().getValueType() - or includeUnknown = true and result = TUnknownElementContent() ) @@ -1335,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..e4004ff3d55 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: 1.0.7-dev groups: ruby extractor: ruby dbscheme: ruby.dbscheme diff --git a/ruby/ql/src/CHANGELOG.md b/ruby/ql/src/CHANGELOG.md index 37101f41c70..fc4544acada 100644 --- a/ruby/ql/src/CHANGELOG.md +++ b/ruby/ql/src/CHANGELOG.md @@ -1,3 +1,7 @@ +## 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/codeql-pack.release.yml b/ruby/ql/src/codeql-pack.release.yml index 2ac15439f56..1a19084be3f 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.1 diff --git a/ruby/ql/src/qlpack.yml b/ruby/ql/src/qlpack.yml index ada2d7236d0..ffbc8ea2abd 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.2-dev groups: - ruby - queries diff --git a/ruby/ql/test/library-tests/dataflow/api-graphs/VerifyApiGraphExpectations.expected b/ruby/ql/test/library-tests/dataflow/api-graphs/VerifyApiGraphExpectations.expected index 48de9172b36..8ec8033d086 100644 --- a/ruby/ql/test/library-tests/dataflow/api-graphs/VerifyApiGraphExpectations.expected +++ b/ruby/ql/test/library-tests/dataflow/api-graphs/VerifyApiGraphExpectations.expected @@ -1,2 +1,2 @@ -failures testFailures +failures diff --git a/ruby/ql/test/library-tests/dataflow/array-flow/array-flow.expected b/ruby/ql/test/library-tests/dataflow/array-flow/array-flow.expected index a9bd1236f47..3899a648b45 100644 --- a/ruby/ql/test/library-tests/dataflow/array-flow/array-flow.expected +++ b/ruby/ql/test/library-tests/dataflow/array-flow/array-flow.expected @@ -2356,6 +2356,16 @@ edges | array_flow.rb:1686:14:1686:14 | w | array_flow.rb:1690:10:1690:10 | w | provenance | | | array_flow.rb:1686:18:1686:18 | a [element 2] | array_flow.rb:1686:11:1686:11 | z | provenance | | | array_flow.rb:1686:18:1686:18 | a [element 3] | array_flow.rb:1686:14:1686:14 | w | provenance | | +| array_flow.rb:1693:10:1693:14 | *args [element 1] | array_flow.rb:1694:17:1694:20 | args [element 1] | provenance | | +| array_flow.rb:1694:16:1694:20 | * ... [element 1] | array_flow.rb:1694:5:1694:21 | call to [] [element 1] | provenance | | +| array_flow.rb:1694:17:1694:20 | args [element 1] | array_flow.rb:1694:16:1694:20 | * ... [element 1] | provenance | | +| array_flow.rb:1697:13:1697:13 | y | array_flow.rb:1699:10:1699:10 | y | provenance | | +| array_flow.rb:1704:5:1704:5 | a [element 1] | array_flow.rb:1705:11:1705:11 | a [element 1] | provenance | | +| array_flow.rb:1704:9:1704:31 | call to m141 [element 1] | array_flow.rb:1704:5:1704:5 | a [element 1] | provenance | | +| array_flow.rb:1704:17:1704:27 | call to source | array_flow.rb:1693:10:1693:14 | *args [element 1] | provenance | | +| array_flow.rb:1704:17:1704:27 | call to source | array_flow.rb:1704:9:1704:31 | call to m141 [element 1] | provenance | | +| array_flow.rb:1705:10:1705:11 | * ... [element 1] | array_flow.rb:1697:13:1697:13 | y | provenance | | +| array_flow.rb:1705:11:1705:11 | a [element 1] | array_flow.rb:1705:10:1705:11 | * ... [element 1] | provenance | | nodes | array_flow.rb:2:5:2:5 | a [element 0] | semmle.label | a [element 0] | | array_flow.rb:2:9:2:20 | * ... [element 0] | semmle.label | * ... [element 0] | @@ -4849,11 +4859,23 @@ nodes | array_flow.rb:1686:18:1686:18 | a [element 3] | semmle.label | a [element 3] | | array_flow.rb:1689:10:1689:10 | z | semmle.label | z | | array_flow.rb:1690:10:1690:10 | w | semmle.label | w | +| array_flow.rb:1693:10:1693:14 | *args [element 1] | semmle.label | *args [element 1] | +| array_flow.rb:1694:5:1694:21 | call to [] [element 1] | semmle.label | call to [] [element 1] | +| array_flow.rb:1694:16:1694:20 | * ... [element 1] | semmle.label | * ... [element 1] | +| array_flow.rb:1694:17:1694:20 | args [element 1] | semmle.label | args [element 1] | +| array_flow.rb:1697:13:1697:13 | y | semmle.label | y | +| array_flow.rb:1699:10:1699:10 | y | semmle.label | y | +| array_flow.rb:1704:5:1704:5 | a [element 1] | semmle.label | a [element 1] | +| array_flow.rb:1704:9:1704:31 | call to m141 [element 1] | semmle.label | call to m141 [element 1] | +| array_flow.rb:1704:17:1704:27 | call to source | semmle.label | call to source | +| array_flow.rb:1705:10:1705:11 | * ... [element 1] | semmle.label | * ... [element 1] | +| array_flow.rb:1705:11:1705:11 | a [element 1] | semmle.label | a [element 1] | subpaths | array_flow.rb:251:9:251:9 | a [element 2] | array_flow.rb:251:30:251:30 | x | array_flow.rb:253:9:253:25 | call to [] [element 0] | array_flow.rb:251:9:254:7 | call to collect_concat [element] | | array_flow.rb:507:9:507:9 | a [element 3] | array_flow.rb:507:26:507:26 | x | array_flow.rb:509:9:509:9 | x | array_flow.rb:507:9:510:7 | call to filter_map [element] | | array_flow.rb:571:9:571:9 | a [element 2] | array_flow.rb:571:24:571:24 | x | array_flow.rb:573:9:573:25 | call to [] [element 0] | array_flow.rb:571:9:574:7 | call to flat_map [element] | | array_flow.rb:1678:9:1678:9 | a [element 2] | array_flow.rb:1678:19:1678:19 | x | array_flow.rb:1679:9:1679:9 | x | array_flow.rb:1678:9:1680:7 | call to map [element] | +| array_flow.rb:1704:17:1704:27 | call to source | array_flow.rb:1693:10:1693:14 | *args [element 1] | array_flow.rb:1694:5:1694:21 | call to [] [element 1] | array_flow.rb:1704:9:1704:31 | call to m141 [element 1] | testFailures arrayLiteral | array_flow.rb:9:9:9:25 | call to [] | @@ -5046,6 +5068,7 @@ arrayLiteral | array_flow.rb:1668:14:1668:41 | ...[...] | | array_flow.rb:1677:9:1677:29 | call to [] | | array_flow.rb:1685:9:1685:44 | call to [] | +| array_flow.rb:1694:5:1694:21 | call to [] | #select | array_flow.rb:3:10:3:13 | ...[...] | array_flow.rb:2:10:2:20 | call to source | array_flow.rb:3:10:3:13 | ...[...] | $@ | array_flow.rb:2:10:2:20 | call to source | call to source | | array_flow.rb:5:10:5:13 | ...[...] | array_flow.rb:2:10:2:20 | call to source | array_flow.rb:5:10:5:13 | ...[...] | $@ | array_flow.rb:2:10:2:20 | call to source | call to source | @@ -5749,3 +5772,4 @@ arrayLiteral | array_flow.rb:1681:10:1681:13 | ...[...] | array_flow.rb:1677:16:1677:28 | call to source | array_flow.rb:1681:10:1681:13 | ...[...] | $@ | array_flow.rb:1677:16:1677:28 | call to source | call to source | | array_flow.rb:1689:10:1689:10 | z | array_flow.rb:1685:16:1685:28 | call to source | array_flow.rb:1689:10:1689:10 | z | $@ | array_flow.rb:1685:16:1685:28 | call to source | call to source | | array_flow.rb:1690:10:1690:10 | w | array_flow.rb:1685:31:1685:43 | call to source | array_flow.rb:1690:10:1690:10 | w | $@ | array_flow.rb:1685:31:1685:43 | call to source | call to source | +| array_flow.rb:1699:10:1699:10 | y | array_flow.rb:1704:17:1704:27 | call to source | array_flow.rb:1699:10:1699:10 | y | $@ | array_flow.rb:1704:17:1704:27 | call to source | call to source | diff --git a/ruby/ql/test/library-tests/dataflow/array-flow/array_flow.rb b/ruby/ql/test/library-tests/dataflow/array-flow/array_flow.rb index cb07ce96ca6..2edfef21688 100644 --- a/ruby/ql/test/library-tests/dataflow/array-flow/array_flow.rb +++ b/ruby/ql/test/library-tests/dataflow/array-flow/array_flow.rb @@ -1689,3 +1689,18 @@ def m140 sink z # $ hasValueFlow=140.1 sink w # $ hasValueFlow=140.2 end + +def m141(*args) + ::Array.[](*args) +end + +def m142(x, y, z) + sink(x) + sink(y) # $ hasValueFlow=143 + sink(z) +end + +def m143 + a = m141(0, source(143), 1) + m142(*a) +end diff --git a/ruby/ql/test/library-tests/dataflow/array-flow/type-tracking-array-flow.expected b/ruby/ql/test/library-tests/dataflow/array-flow/type-tracking-array-flow.expected index bbb3be53b54..9750c7a94b2 100644 --- a/ruby/ql/test/library-tests/dataflow/array-flow/type-tracking-array-flow.expected +++ b/ruby/ql/test/library-tests/dataflow/array-flow/type-tracking-array-flow.expected @@ -64,4 +64,5 @@ testFailures | array_flow.rb:1626:19:1626:70 | # $ hasValueFlow=136.2 $ SPURIOUS hasValueFlow=136.1 | Missing result:hasValueFlow=136.1 | | array_flow.rb:1626:19:1626:70 | # $ hasValueFlow=136.2 $ SPURIOUS hasValueFlow=136.1 | Missing result:hasValueFlow=136.2 | | array_flow.rb:1627:19:1627:40 | # $ hasValueFlow=136.1 | Missing result:hasValueFlow=136.1 | +| array_flow.rb:1699:13:1699:32 | # $ hasValueFlow=143 | Missing result:hasValueFlow=143 | failures diff --git a/ruby/ql/test/library-tests/dataflow/flow-summaries/semantics.expected b/ruby/ql/test/library-tests/dataflow/flow-summaries/semantics.expected index 84dc5fa3728..63f33ab5b55 100644 --- a/ruby/ql/test/library-tests/dataflow/flow-summaries/semantics.expected +++ b/ruby/ql/test/library-tests/dataflow/flow-summaries/semantics.expected @@ -78,14 +78,14 @@ edges | semantics.rb:60:5:60:5 | a | semantics.rb:66:14:66:15 | &... | provenance | | | semantics.rb:60:9:60:18 | call to source | semantics.rb:60:5:60:5 | a | provenance | | | semantics.rb:60:9:60:18 | call to source | semantics.rb:60:5:60:5 | a | provenance | | -| semantics.rb:61:10:61:15 | call to s10 [splat position 0] | semantics.rb:61:10:61:15 | call to s10 | provenance | | +| semantics.rb:61:10:61:15 | call to s10 [element 0] | semantics.rb:61:10:61:15 | call to s10 | provenance | | | semantics.rb:61:14:61:14 | a | semantics.rb:61:10:61:15 | call to s10 | provenance | | | semantics.rb:61:14:61:14 | a | semantics.rb:61:10:61:15 | call to s10 | provenance | | -| semantics.rb:61:14:61:14 | a | semantics.rb:61:10:61:15 | call to s10 [splat position 0] | provenance | | -| semantics.rb:62:10:62:18 | call to s10 [splat position 1] | semantics.rb:62:10:62:18 | call to s10 | provenance | | +| semantics.rb:61:14:61:14 | a | semantics.rb:61:10:61:15 | call to s10 [element 0] | provenance | | +| semantics.rb:62:10:62:18 | call to s10 [element 1] | semantics.rb:62:10:62:18 | call to s10 | provenance | | | semantics.rb:62:17:62:17 | a | semantics.rb:62:10:62:18 | call to s10 | provenance | | | semantics.rb:62:17:62:17 | a | semantics.rb:62:10:62:18 | call to s10 | provenance | | -| semantics.rb:62:17:62:17 | a | semantics.rb:62:10:62:18 | call to s10 [splat position 1] | provenance | | +| semantics.rb:62:17:62:17 | a | semantics.rb:62:10:62:18 | call to s10 [element 1] | provenance | | | semantics.rb:63:19:63:19 | a | semantics.rb:63:10:63:20 | call to s10 | provenance | | | semantics.rb:63:19:63:19 | a | semantics.rb:63:10:63:20 | call to s10 | provenance | | | semantics.rb:64:27:64:27 | a | semantics.rb:64:10:64:28 | call to s10 | provenance | | @@ -144,14 +144,14 @@ edges | semantics.rb:108:5:108:5 | b | semantics.rb:110:27:110:27 | b | provenance | | | semantics.rb:108:9:108:18 | call to source | semantics.rb:108:5:108:5 | b | provenance | | | semantics.rb:108:9:108:18 | call to source | semantics.rb:108:5:108:5 | b | provenance | | -| semantics.rb:109:10:109:28 | call to s15 [hash-splat position :foo] | semantics.rb:109:10:109:34 | ...[...] | provenance | | -| semantics.rb:109:10:109:28 | call to s15 [hash-splat position :foo] | semantics.rb:109:10:109:34 | ...[...] | provenance | | -| semantics.rb:109:19:109:19 | a | semantics.rb:109:10:109:28 | call to s15 [hash-splat position :foo] | provenance | | -| semantics.rb:109:19:109:19 | a | semantics.rb:109:10:109:28 | call to s15 [hash-splat position :foo] | provenance | | -| semantics.rb:110:10:110:28 | call to s15 [hash-splat position :bar] | semantics.rb:110:10:110:34 | ...[...] | provenance | | -| semantics.rb:110:10:110:28 | call to s15 [hash-splat position :bar] | semantics.rb:110:10:110:34 | ...[...] | provenance | | -| semantics.rb:110:27:110:27 | b | semantics.rb:110:10:110:28 | call to s15 [hash-splat position :bar] | provenance | | -| semantics.rb:110:27:110:27 | b | semantics.rb:110:10:110:28 | call to s15 [hash-splat position :bar] | provenance | | +| semantics.rb:109:10:109:28 | call to s15 [element :foo] | semantics.rb:109:10:109:34 | ...[...] | provenance | | +| semantics.rb:109:10:109:28 | call to s15 [element :foo] | semantics.rb:109:10:109:34 | ...[...] | provenance | | +| semantics.rb:109:19:109:19 | a | semantics.rb:109:10:109:28 | call to s15 [element :foo] | provenance | | +| semantics.rb:109:19:109:19 | a | semantics.rb:109:10:109:28 | call to s15 [element :foo] | provenance | | +| semantics.rb:110:10:110:28 | call to s15 [element :bar] | semantics.rb:110:10:110:34 | ...[...] | provenance | | +| semantics.rb:110:10:110:28 | call to s15 [element :bar] | semantics.rb:110:10:110:34 | ...[...] | provenance | | +| semantics.rb:110:27:110:27 | b | semantics.rb:110:10:110:28 | call to s15 [element :bar] | provenance | | +| semantics.rb:110:27:110:27 | b | semantics.rb:110:10:110:28 | call to s15 [element :bar] | provenance | | | semantics.rb:114:5:114:5 | a | semantics.rb:116:14:116:14 | a | provenance | | | semantics.rb:114:5:114:5 | a | semantics.rb:116:14:116:14 | a | provenance | | | semantics.rb:114:5:114:5 | a | semantics.rb:119:17:119:17 | a | provenance | | @@ -192,18 +192,18 @@ edges | semantics.rb:126:5:126:5 | b | semantics.rb:129:17:129:17 | b | provenance | | | semantics.rb:126:9:126:18 | call to source | semantics.rb:126:5:126:5 | b | provenance | | | semantics.rb:126:9:126:18 | call to source | semantics.rb:126:5:126:5 | b | provenance | | -| semantics.rb:127:10:127:18 | call to s17 [splat position 0] | semantics.rb:127:10:127:18 | call to s17 | provenance | | -| semantics.rb:127:10:127:18 | call to s17 [splat position 1] | semantics.rb:127:10:127:18 | call to s17 | provenance | | -| semantics.rb:127:14:127:14 | a | semantics.rb:127:10:127:18 | call to s17 [splat position 0] | provenance | | -| semantics.rb:127:17:127:17 | b | semantics.rb:127:10:127:18 | call to s17 [splat position 1] | provenance | | -| semantics.rb:128:10:128:18 | call to s17 [splat position 0] | semantics.rb:128:10:128:21 | ...[...] | provenance | | -| semantics.rb:128:10:128:18 | call to s17 [splat position 0] | semantics.rb:128:10:128:21 | ...[...] | provenance | | -| semantics.rb:128:14:128:14 | a | semantics.rb:128:10:128:18 | call to s17 [splat position 0] | provenance | | -| semantics.rb:128:14:128:14 | a | semantics.rb:128:10:128:18 | call to s17 [splat position 0] | provenance | | -| semantics.rb:129:10:129:18 | call to s17 [splat position 1] | semantics.rb:129:10:129:21 | ...[...] | provenance | | -| semantics.rb:129:10:129:18 | call to s17 [splat position 1] | semantics.rb:129:10:129:21 | ...[...] | provenance | | -| semantics.rb:129:17:129:17 | b | semantics.rb:129:10:129:18 | call to s17 [splat position 1] | provenance | | -| semantics.rb:129:17:129:17 | b | semantics.rb:129:10:129:18 | call to s17 [splat position 1] | provenance | | +| semantics.rb:127:10:127:18 | call to s17 [element 0] | semantics.rb:127:10:127:18 | call to s17 | provenance | | +| semantics.rb:127:10:127:18 | call to s17 [element 1] | semantics.rb:127:10:127:18 | call to s17 | provenance | | +| semantics.rb:127:14:127:14 | a | semantics.rb:127:10:127:18 | call to s17 [element 0] | provenance | | +| semantics.rb:127:17:127:17 | b | semantics.rb:127:10:127:18 | call to s17 [element 1] | provenance | | +| semantics.rb:128:10:128:18 | call to s17 [element 0] | semantics.rb:128:10:128:21 | ...[...] | provenance | | +| semantics.rb:128:10:128:18 | call to s17 [element 0] | semantics.rb:128:10:128:21 | ...[...] | provenance | | +| semantics.rb:128:14:128:14 | a | semantics.rb:128:10:128:18 | call to s17 [element 0] | provenance | | +| semantics.rb:128:14:128:14 | a | semantics.rb:128:10:128:18 | call to s17 [element 0] | provenance | | +| semantics.rb:129:10:129:18 | call to s17 [element 1] | semantics.rb:129:10:129:21 | ...[...] | provenance | | +| semantics.rb:129:10:129:18 | call to s17 [element 1] | semantics.rb:129:10:129:21 | ...[...] | provenance | | +| semantics.rb:129:17:129:17 | b | semantics.rb:129:10:129:18 | call to s17 [element 1] | provenance | | +| semantics.rb:129:17:129:17 | b | semantics.rb:129:10:129:18 | call to s17 [element 1] | provenance | | | semantics.rb:133:5:133:5 | a | semantics.rb:135:12:135:12 | a | provenance | | | semantics.rb:133:5:133:5 | a | semantics.rb:135:12:135:12 | a | provenance | | | semantics.rb:133:5:133:5 | a | semantics.rb:137:14:137:14 | a | provenance | | @@ -1191,12 +1191,12 @@ nodes | semantics.rb:60:9:60:18 | call to source | semmle.label | call to source | | semantics.rb:61:10:61:15 | call to s10 | semmle.label | call to s10 | | semantics.rb:61:10:61:15 | call to s10 | semmle.label | call to s10 | -| semantics.rb:61:10:61:15 | call to s10 [splat position 0] | semmle.label | call to s10 [splat position 0] | +| semantics.rb:61:10:61:15 | call to s10 [element 0] | semmle.label | call to s10 [element 0] | | semantics.rb:61:14:61:14 | a | semmle.label | a | | semantics.rb:61:14:61:14 | a | semmle.label | a | | semantics.rb:62:10:62:18 | call to s10 | semmle.label | call to s10 | | semantics.rb:62:10:62:18 | call to s10 | semmle.label | call to s10 | -| semantics.rb:62:10:62:18 | call to s10 [splat position 1] | semmle.label | call to s10 [splat position 1] | +| semantics.rb:62:10:62:18 | call to s10 [element 1] | semmle.label | call to s10 [element 1] | | semantics.rb:62:17:62:17 | a | semmle.label | a | | semantics.rb:62:17:62:17 | a | semmle.label | a | | semantics.rb:63:10:63:20 | call to s10 | semmle.label | call to s10 | @@ -1269,14 +1269,14 @@ nodes | semantics.rb:108:5:108:5 | b | semmle.label | b | | semantics.rb:108:9:108:18 | call to source | semmle.label | call to source | | semantics.rb:108:9:108:18 | call to source | semmle.label | call to source | -| semantics.rb:109:10:109:28 | call to s15 [hash-splat position :foo] | semmle.label | call to s15 [hash-splat position :foo] | -| semantics.rb:109:10:109:28 | call to s15 [hash-splat position :foo] | semmle.label | call to s15 [hash-splat position :foo] | +| semantics.rb:109:10:109:28 | call to s15 [element :foo] | semmle.label | call to s15 [element :foo] | +| semantics.rb:109:10:109:28 | call to s15 [element :foo] | semmle.label | call to s15 [element :foo] | | semantics.rb:109:10:109:34 | ...[...] | semmle.label | ...[...] | | semantics.rb:109:10:109:34 | ...[...] | semmle.label | ...[...] | | semantics.rb:109:19:109:19 | a | semmle.label | a | | semantics.rb:109:19:109:19 | a | semmle.label | a | -| semantics.rb:110:10:110:28 | call to s15 [hash-splat position :bar] | semmle.label | call to s15 [hash-splat position :bar] | -| semantics.rb:110:10:110:28 | call to s15 [hash-splat position :bar] | semmle.label | call to s15 [hash-splat position :bar] | +| semantics.rb:110:10:110:28 | call to s15 [element :bar] | semmle.label | call to s15 [element :bar] | +| semantics.rb:110:10:110:28 | call to s15 [element :bar] | semmle.label | call to s15 [element :bar] | | semantics.rb:110:10:110:34 | ...[...] | semmle.label | ...[...] | | semantics.rb:110:10:110:34 | ...[...] | semmle.label | ...[...] | | semantics.rb:110:27:110:27 | b | semmle.label | b | @@ -1322,18 +1322,18 @@ nodes | semantics.rb:126:9:126:18 | call to source | semmle.label | call to source | | semantics.rb:126:9:126:18 | call to source | semmle.label | call to source | | semantics.rb:127:10:127:18 | call to s17 | semmle.label | call to s17 | -| semantics.rb:127:10:127:18 | call to s17 [splat position 0] | semmle.label | call to s17 [splat position 0] | -| semantics.rb:127:10:127:18 | call to s17 [splat position 1] | semmle.label | call to s17 [splat position 1] | +| semantics.rb:127:10:127:18 | call to s17 [element 0] | semmle.label | call to s17 [element 0] | +| semantics.rb:127:10:127:18 | call to s17 [element 1] | semmle.label | call to s17 [element 1] | | semantics.rb:127:14:127:14 | a | semmle.label | a | | semantics.rb:127:17:127:17 | b | semmle.label | b | -| semantics.rb:128:10:128:18 | call to s17 [splat position 0] | semmle.label | call to s17 [splat position 0] | -| semantics.rb:128:10:128:18 | call to s17 [splat position 0] | semmle.label | call to s17 [splat position 0] | +| semantics.rb:128:10:128:18 | call to s17 [element 0] | semmle.label | call to s17 [element 0] | +| semantics.rb:128:10:128:18 | call to s17 [element 0] | semmle.label | call to s17 [element 0] | | semantics.rb:128:10:128:21 | ...[...] | semmle.label | ...[...] | | semantics.rb:128:10:128:21 | ...[...] | semmle.label | ...[...] | | semantics.rb:128:14:128:14 | a | semmle.label | a | | semantics.rb:128:14:128:14 | a | semmle.label | a | -| semantics.rb:129:10:129:18 | call to s17 [splat position 1] | semmle.label | call to s17 [splat position 1] | -| semantics.rb:129:10:129:18 | call to s17 [splat position 1] | semmle.label | call to s17 [splat position 1] | +| semantics.rb:129:10:129:18 | call to s17 [element 1] | semmle.label | call to s17 [element 1] | +| semantics.rb:129:10:129:18 | call to s17 [element 1] | semmle.label | call to s17 [element 1] | | semantics.rb:129:10:129:21 | ...[...] | semmle.label | ...[...] | | semantics.rb:129:10:129:21 | ...[...] | semmle.label | ...[...] | | semantics.rb:129:17:129:17 | b | semmle.label | b | diff --git a/ruby/ql/test/library-tests/dataflow/params/TypeTracker.expected b/ruby/ql/test/library-tests/dataflow/params/TypeTracker.expected index 09e1598caf5..23d66c80ad2 100644 --- a/ruby/ql/test/library-tests/dataflow/params/TypeTracker.expected +++ b/ruby/ql/test/library-tests/dataflow/params/TypeTracker.expected @@ -36,8 +36,6 @@ track | params_flow.rb:1:11:1:11 | x | type tracker with call steps | params_flow.rb:65:10:65:13 | ...[...] | | params_flow.rb:1:11:1:11 | x | type tracker with call steps | params_flow.rb:69:14:69:14 | x | | params_flow.rb:1:11:1:11 | x | type tracker with call steps | params_flow.rb:69:17:69:17 | y | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps | params_flow.rb:69:24:69:24 | w | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps | params_flow.rb:69:27:69:27 | r | | params_flow.rb:1:11:1:11 | x | type tracker with call steps | params_flow.rb:83:14:83:14 | t | | params_flow.rb:1:11:1:11 | x | type tracker with call steps | params_flow.rb:83:17:83:17 | u | | params_flow.rb:1:11:1:11 | x | type tracker with call steps | params_flow.rb:83:20:83:20 | v | @@ -45,7 +43,6 @@ track | params_flow.rb:1:11:1:11 | x | type tracker with call steps | params_flow.rb:83:26:83:26 | x | | params_flow.rb:1:11:1:11 | x | type tracker with call steps | params_flow.rb:83:29:83:29 | y | | params_flow.rb:1:11:1:11 | x | type tracker with call steps | params_flow.rb:98:19:98:19 | a | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps | params_flow.rb:98:31:98:31 | b | | params_flow.rb:1:11:1:11 | x | type tracker with call steps | params_flow.rb:108:37:108:37 | a | | params_flow.rb:1:11:1:11 | x | type tracker with call steps | params_flow.rb:108:44:108:44 | c | | params_flow.rb:1:11:1:11 | x | type tracker with call steps | params_flow.rb:110:10:110:13 | ...[...] | @@ -56,12 +53,40 @@ track | params_flow.rb:1:11:1:11 | x | type tracker with call steps | params_flow.rb:181:28:181:29 | p2 | | params_flow.rb:1:11:1:11 | x | type tracker with call steps | params_flow.rb:200:9:200:9 | x | | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element | params_flow.rb:9:1:12:3 | synthetic splat parameter | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:9:1:12:3 | synthetic splat parameter | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:11:5:11:11 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:17:5:17:11 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:18:5:18:11 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:26:5:26:11 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:27:5:27:22 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:28:5:28:22 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:29:5:29:22 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:49:1:53:3 | synthetic splat parameter | | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:49:17:49:24 | *posargs | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:50:5:50:11 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:51:5:51:21 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:65:5:65:13 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:70:5:70:10 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:71:5:71:10 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:83:1:91:3 | synthetic splat parameter | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:84:5:84:10 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:85:5:85:10 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:86:5:86:10 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:87:5:87:10 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:88:5:88:10 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:89:5:89:10 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:98:1:103:3 | synthetic splat parameter | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:99:5:99:10 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:108:1:112:3 | synthetic splat parameter | | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:108:40:108:41 | *b | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:109:5:109:10 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:110:5:110:13 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:111:5:111:10 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:133:14:133:18 | *args | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:134:5:134:16 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 | params_flow.rb:200:1:205:3 | synthetic splat parameter | | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 or unknown | params_flow.rb:64:16:64:17 | *x | | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 or unknown | params_flow.rb:140:5:140:15 | [post] ...[...] | @@ -74,11 +99,26 @@ track | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 0 or unknown | params_flow.rb:182:5:182:20 | call to insert | | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 1 | params_flow.rb:9:1:12:3 | synthetic splat parameter | | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 1 | params_flow.rb:49:1:53:3 | synthetic splat parameter | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 1 | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 1 | params_flow.rb:83:1:91:3 | synthetic splat parameter | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 1 | params_flow.rb:98:1:103:3 | synthetic splat parameter | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 1 | params_flow.rb:108:1:112:3 | synthetic splat parameter | | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 1 | params_flow.rb:133:14:133:18 | *args | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 1 | params_flow.rb:140:5:140:38 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 1 | params_flow.rb:154:5:154:20 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 1 | params_flow.rb:167:21:167:28 | *posargs | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 1 | params_flow.rb:168:5:168:36 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 1 | params_flow.rb:181:1:183:3 | synthetic splat parameter | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 1 | params_flow.rb:182:5:182:20 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 2 | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 2 | params_flow.rb:83:1:91:3 | synthetic splat parameter | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 2 | params_flow.rb:98:1:103:3 | synthetic splat parameter | | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 2 | params_flow.rb:133:14:133:18 | *args | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 3 | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 3 | params_flow.rb:83:1:91:3 | synthetic splat parameter | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 4 | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 4 | params_flow.rb:83:1:91:3 | synthetic splat parameter | +| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element 5 | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element :p1 | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element :p1 | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element :p1 | params_flow.rb:25:17:25:24 | **kwargs | @@ -88,80 +128,6 @@ track | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element :p2 | params_flow.rb:153:1:155:3 | synthetic hash-splat parameter | | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element :p3 | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | | params_flow.rb:1:11:1:11 | x | type tracker with call steps with content element :p3 | params_flow.rb:25:17:25:24 | **kwargs | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content hash-splat position :c | params_flow.rb:108:1:112:3 | synthetic hash-splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content hash-splat position :p1 | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content hash-splat position :p1 | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content hash-splat position :p1 | params_flow.rb:25:17:25:24 | **kwargs | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content hash-splat position :p2 | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content hash-splat position :p2 | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content hash-splat position :p2 | params_flow.rb:25:17:25:24 | **kwargs | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content hash-splat position :p2 | params_flow.rb:139:25:139:32 | **kwargs | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content hash-splat position :p2 | params_flow.rb:153:1:155:3 | synthetic hash-splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content hash-splat position :p3 | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content hash-splat position :p3 | params_flow.rb:25:17:25:24 | **kwargs | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:9:1:12:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:11:5:11:11 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:17:5:17:11 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:18:5:18:11 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:26:5:26:11 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:27:5:27:22 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:28:5:28:22 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:29:5:29:22 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:49:1:53:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:50:5:50:11 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:51:5:51:21 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:65:5:65:13 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:69:1:76:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:70:5:70:10 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:71:5:71:10 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:74:5:74:10 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:75:5:75:10 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:83:1:91:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:84:5:84:10 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:85:5:85:10 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:86:5:86:10 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:87:5:87:10 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:88:5:88:10 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:89:5:89:10 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:98:1:103:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:99:5:99:10 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:102:5:102:10 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:108:1:112:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:109:5:109:10 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:110:5:110:13 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:111:5:111:10 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 0 | params_flow.rb:134:5:134:16 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 1 | params_flow.rb:9:1:12:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 1 | params_flow.rb:49:1:53:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 1 | params_flow.rb:69:1:76:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 1 | params_flow.rb:83:1:91:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 1 | params_flow.rb:98:1:103:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 1 | params_flow.rb:108:1:112:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 1 | params_flow.rb:140:5:140:38 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 1 | params_flow.rb:154:5:154:20 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 1 | params_flow.rb:167:21:167:28 | *posargs | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 1 | params_flow.rb:168:5:168:36 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 1 | params_flow.rb:181:1:183:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 1 | params_flow.rb:182:5:182:20 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 1 (shifted) | params_flow.rb:9:1:12:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 1 (shifted) | params_flow.rb:49:1:53:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 1 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 1 (shifted) | params_flow.rb:98:1:103:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 2 | params_flow.rb:69:1:76:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 2 | params_flow.rb:98:1:103:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 2 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 2 (shifted) | params_flow.rb:83:1:91:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 2 (shifted) | params_flow.rb:98:1:103:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 3 | params_flow.rb:69:1:76:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 3 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 3 (shifted) | params_flow.rb:83:1:91:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 4 | params_flow.rb:69:1:76:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 4 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 4 (shifted) | params_flow.rb:83:1:91:3 | synthetic splat parameter | -| params_flow.rb:1:11:1:11 | x | type tracker with call steps with content splat position 5 (shifted) | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:1:11:1:11 | x | type tracker without call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:1:11:1:11 | x | type tracker without call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:1:11:1:11 | x | type tracker without call steps | params_flow.rb:14:12:14:19 | call to taint | @@ -249,30 +215,41 @@ track | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content attribute [] | params_flow.rb:117:1:117:1 | [post] x | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element | params_flow.rb:117:1:117:1 | [post] x | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element | params_flow.rb:118:12:118:13 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:14:1:14:30 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:43:8:43:18 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:43:8:43:18 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:44:1:44:28 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:44:23:44:27 | * ... | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:46:8:46:29 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:46:8:46:29 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:47:12:47:16 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:55:1:55:29 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:57:8:57:18 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:57:8:57:18 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:58:1:58:25 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:58:20:58:24 | * ... | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:60:8:60:29 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:60:8:60:29 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:61:9:61:13 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:78:1:78:63 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:80:8:80:51 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:80:8:80:51 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:81:1:81:37 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:81:21:81:25 | * ... | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:93:8:93:51 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:93:8:93:51 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:94:32:94:36 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:96:1:96:88 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:96:32:96:65 | * ... | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:96:33:96:65 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:96:33:96:65 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:105:1:105:49 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:105:26:105:48 | * ... | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:105:27:105:48 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:105:27:105:48 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:106:1:106:46 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:114:1:114:67 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:128:10:128:31 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:128:10:128:31 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:128:34:128:60 | call to [] | @@ -287,24 +264,36 @@ track | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:195:12:198:1 | synthetic hash-splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 | params_flow.rb:207:5:207:13 | * ... | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 0 or unknown | params_flow.rb:67:12:67:16 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:14:1:14:30 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:44:1:44:28 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:46:8:46:29 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:46:8:46:29 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:47:12:47:16 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:55:1:55:29 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:58:1:58:25 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:60:8:60:29 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:60:8:60:29 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:61:9:61:13 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:78:1:78:63 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:80:8:80:51 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:80:8:80:51 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:81:1:81:37 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:81:21:81:25 | * ... | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:93:8:93:51 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:93:8:93:51 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:94:32:94:36 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:96:1:96:88 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:96:32:96:65 | * ... | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:96:33:96:65 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:96:33:96:65 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:105:1:105:49 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:105:26:105:48 | * ... | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:105:27:105:48 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:105:27:105:48 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:106:1:106:46 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:114:1:114:67 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:117:1:117:15 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:128:10:128:31 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:128:10:128:31 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:128:46:128:59 | call to [] | @@ -318,106 +307,83 @@ track | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:171:11:171:27 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:171:11:171:27 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:173:17:173:24 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:178:1:178:30 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:185:8:185:24 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:185:8:185:24 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:187:20:187:24 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 1 | params_flow.rb:192:1:192:33 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:78:1:78:63 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:80:8:80:51 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:80:8:80:51 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:81:1:81:37 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:81:21:81:25 | * ... | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:93:8:93:51 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:93:8:93:51 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:94:32:94:36 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:96:1:96:88 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:96:32:96:65 | * ... | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:96:33:96:65 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:96:33:96:65 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:105:1:105:49 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:106:1:106:46 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:137:10:137:43 | * ... | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:137:11:137:43 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 2 | params_flow.rb:137:11:137:43 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 3 | params_flow.rb:78:1:78:63 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 3 | params_flow.rb:80:8:80:51 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 3 | params_flow.rb:80:8:80:51 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 3 | params_flow.rb:81:1:81:37 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 3 | params_flow.rb:81:21:81:25 | * ... | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 3 | params_flow.rb:93:8:93:51 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 3 | params_flow.rb:93:8:93:51 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 3 | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 3 | params_flow.rb:94:32:94:36 | * ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 3 | params_flow.rb:96:1:96:88 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 4 | params_flow.rb:78:1:78:63 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 4 | params_flow.rb:81:1:81:37 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 4 | params_flow.rb:94:1:94:48 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 4 | params_flow.rb:96:1:96:88 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element 5 | params_flow.rb:94:1:94:48 | synthetic splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :c | params_flow.rb:114:1:114:67 | synthetic hash-splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p1 | params_flow.rb:21:1:21:35 | synthetic hash-splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p1 | params_flow.rb:22:1:22:35 | synthetic hash-splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p1 | params_flow.rb:23:1:23:41 | synthetic hash-splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p1 | params_flow.rb:33:1:33:58 | synthetic hash-splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p1 | params_flow.rb:35:1:35:29 | synthetic hash-splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p1 | params_flow.rb:37:8:37:44 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p1 | params_flow.rb:37:8:37:44 | synthetic hash-splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p1 | params_flow.rb:38:8:38:13 | ** ... | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p1 | params_flow.rb:40:8:40:26 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p1 | params_flow.rb:40:8:40:26 | synthetic hash-splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p1 | params_flow.rb:41:24:41:29 | ** ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p2 | params_flow.rb:21:1:21:35 | synthetic hash-splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p2 | params_flow.rb:22:1:22:35 | synthetic hash-splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p2 | params_flow.rb:23:1:23:41 | synthetic hash-splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p2 | params_flow.rb:33:1:33:58 | synthetic hash-splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p2 | params_flow.rb:37:8:37:44 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p2 | params_flow.rb:37:8:37:44 | synthetic hash-splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p2 | params_flow.rb:38:8:38:13 | ** ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p2 | params_flow.rb:41:1:41:30 | synthetic hash-splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p2 | params_flow.rb:143:10:143:34 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p2 | params_flow.rb:143:10:143:34 | synthetic hash-splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p2 | params_flow.rb:145:21:145:28 | ** ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p2 | params_flow.rb:150:1:150:42 | synthetic hash-splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p2 | params_flow.rb:157:10:157:34 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p2 | params_flow.rb:157:10:157:34 | synthetic hash-splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p2 | params_flow.rb:159:19:159:26 | ** ... | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p2 | params_flow.rb:164:1:164:40 | synthetic hash-splat argument | +| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p3 | params_flow.rb:33:1:33:58 | synthetic hash-splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p3 | params_flow.rb:34:8:34:32 | call to [] | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p3 | params_flow.rb:34:8:34:32 | synthetic hash-splat argument | | params_flow.rb:1:11:1:11 | x | type tracker without call steps with content element :p3 | params_flow.rb:35:23:35:28 | ** ... | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content hash-splat position :c | params_flow.rb:114:1:114:67 | synthetic hash-splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content hash-splat position :p1 | params_flow.rb:21:1:21:35 | synthetic hash-splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content hash-splat position :p1 | params_flow.rb:22:1:22:35 | synthetic hash-splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content hash-splat position :p1 | params_flow.rb:23:1:23:41 | synthetic hash-splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content hash-splat position :p1 | params_flow.rb:33:1:33:58 | synthetic hash-splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content hash-splat position :p1 | params_flow.rb:35:1:35:29 | synthetic hash-splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content hash-splat position :p2 | params_flow.rb:21:1:21:35 | synthetic hash-splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content hash-splat position :p2 | params_flow.rb:22:1:22:35 | synthetic hash-splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content hash-splat position :p2 | params_flow.rb:23:1:23:41 | synthetic hash-splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content hash-splat position :p2 | params_flow.rb:33:1:33:58 | synthetic hash-splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content hash-splat position :p2 | params_flow.rb:41:1:41:30 | synthetic hash-splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content hash-splat position :p2 | params_flow.rb:150:1:150:42 | synthetic hash-splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content hash-splat position :p2 | params_flow.rb:164:1:164:40 | synthetic hash-splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content hash-splat position :p3 | params_flow.rb:33:1:33:58 | synthetic hash-splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:14:1:14:30 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:44:1:44:28 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:55:1:55:29 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:58:1:58:25 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:78:1:78:63 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:81:1:81:37 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:94:1:94:48 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:96:1:96:88 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:105:1:105:49 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:106:1:106:46 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 0 | params_flow.rb:114:1:114:67 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 | params_flow.rb:14:1:14:30 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 | params_flow.rb:55:1:55:29 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 | params_flow.rb:78:1:78:63 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 | params_flow.rb:94:1:94:48 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 | params_flow.rb:96:1:96:88 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 | params_flow.rb:106:1:106:46 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 | params_flow.rb:114:1:114:67 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 | params_flow.rb:117:1:117:15 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 | params_flow.rb:178:1:178:30 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 | params_flow.rb:192:1:192:33 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:44:1:44:28 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:58:1:58:25 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:81:1:81:37 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:105:1:105:49 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 2 | params_flow.rb:78:1:78:63 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 2 | params_flow.rb:106:1:106:46 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 2 (shifted) | params_flow.rb:81:1:81:37 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 2 (shifted) | params_flow.rb:94:1:94:48 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 2 (shifted) | params_flow.rb:96:1:96:88 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 2 (shifted) | params_flow.rb:105:1:105:49 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 3 | params_flow.rb:78:1:78:63 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 3 (shifted) | params_flow.rb:81:1:81:37 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 3 (shifted) | params_flow.rb:94:1:94:48 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 3 (shifted) | params_flow.rb:96:1:96:88 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 4 | params_flow.rb:78:1:78:63 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 4 (shifted) | params_flow.rb:81:1:81:37 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 4 (shifted) | params_flow.rb:94:1:94:48 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 4 (shifted) | params_flow.rb:96:1:96:88 | synthetic splat argument | -| params_flow.rb:1:11:1:11 | x | type tracker without call steps with content splat position 5 (shifted) | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:5:1:7:3 | &block | type tracker without call steps | params_flow.rb:5:1:7:3 | &block | | params_flow.rb:5:1:7:3 | self in sink | type tracker without call steps | params_flow.rb:5:1:7:3 | self in sink | | params_flow.rb:5:1:7:3 | sink | type tracker without call steps | params_flow.rb:5:1:7:3 | sink | | params_flow.rb:5:1:7:3 | synthetic splat parameter | type tracker without call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:5:10:5:10 | x | type tracker without call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:5:10:5:10 | x | type tracker without call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:5:10:5:10 | x | type tracker without call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:5:10:5:10 | x | type tracker without call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:6:5:6:10 | call to puts | type tracker without call steps | params_flow.rb:6:5:6:10 | call to puts | | params_flow.rb:6:5:6:10 | call to puts | type tracker without call steps | params_flow.rb:10:5:10:11 | call to sink | | params_flow.rb:6:5:6:10 | call to puts | type tracker without call steps | params_flow.rb:11:5:11:11 | call to sink | @@ -511,319 +477,248 @@ track | params_flow.rb:9:1:12:3 | self in positional | type tracker without call steps | params_flow.rb:9:1:12:3 | self in positional | | params_flow.rb:9:1:12:3 | synthetic splat parameter | type tracker without call steps | params_flow.rb:9:1:12:3 | synthetic splat parameter | | params_flow.rb:9:16:9:17 | p1 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:9:16:9:17 | p1 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:9:16:9:17 | p1 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:9:16:9:17 | p1 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:9:16:9:17 | p1 | type tracker without call steps | params_flow.rb:9:16:9:17 | p1 | | params_flow.rb:9:16:9:17 | p1 | type tracker without call steps | params_flow.rb:9:16:9:17 | p1 | -| params_flow.rb:9:16:9:17 | p1 | type tracker without call steps with content splat position 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | +| params_flow.rb:9:16:9:17 | p1 | type tracker without call steps with content element 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | | params_flow.rb:9:20:9:21 | p2 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:9:20:9:21 | p2 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:9:20:9:21 | p2 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:9:20:9:21 | p2 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:9:20:9:21 | p2 | type tracker without call steps | params_flow.rb:9:20:9:21 | p2 | | params_flow.rb:9:20:9:21 | p2 | type tracker without call steps | params_flow.rb:9:20:9:21 | p2 | -| params_flow.rb:9:20:9:21 | p2 | type tracker without call steps with content splat position 0 | params_flow.rb:11:5:11:11 | synthetic splat argument | +| params_flow.rb:9:20:9:21 | p2 | type tracker without call steps with content element 0 | params_flow.rb:11:5:11:11 | synthetic splat argument | | params_flow.rb:10:5:10:11 | call to sink | type tracker without call steps | params_flow.rb:10:5:10:11 | call to sink | -| params_flow.rb:10:5:10:11 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:10:5:10:11 | synthetic splat argument | type tracker without call steps | params_flow.rb:10:5:10:11 | synthetic splat argument | | params_flow.rb:11:5:11:11 | call to sink | type tracker without call steps | params_flow.rb:11:5:11:11 | call to sink | | params_flow.rb:11:5:11:11 | call to sink | type tracker without call steps | params_flow.rb:14:1:14:30 | call to positional | | params_flow.rb:11:5:11:11 | call to sink | type tracker without call steps | params_flow.rb:44:1:44:28 | call to positional | | params_flow.rb:11:5:11:11 | call to sink | type tracker without call steps | params_flow.rb:47:1:47:17 | call to positional | | params_flow.rb:11:5:11:11 | call to sink | type tracker without call steps | params_flow.rb:118:1:118:14 | call to positional | -| params_flow.rb:11:5:11:11 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:11:5:11:11 | synthetic splat argument | type tracker without call steps | params_flow.rb:11:5:11:11 | synthetic splat argument | | params_flow.rb:14:1:14:30 | call to positional | type tracker without call steps | params_flow.rb:14:1:14:30 | call to positional | -| params_flow.rb:14:1:14:30 | synthetic splat argument | type tracker with call steps | params_flow.rb:9:1:12:3 | synthetic splat parameter | | params_flow.rb:14:1:14:30 | synthetic splat argument | type tracker without call steps | params_flow.rb:14:1:14:30 | synthetic splat argument | | params_flow.rb:14:12:14:19 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:14:12:14:19 | call to taint | type tracker with call steps | params_flow.rb:9:16:9:17 | p1 | -| params_flow.rb:14:12:14:19 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:14:12:14:19 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:14:12:14:19 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:9:1:12:3 | synthetic splat parameter | -| params_flow.rb:14:12:14:19 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | +| params_flow.rb:14:12:14:19 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:14:12:14:19 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | | params_flow.rb:14:12:14:19 | call to taint | type tracker without call steps | params_flow.rb:14:12:14:19 | call to taint | -| params_flow.rb:14:12:14:19 | call to taint | type tracker without call steps with content splat position 0 | params_flow.rb:14:1:14:30 | synthetic splat argument | -| params_flow.rb:14:12:14:19 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:14:12:14:19 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:14:1:14:30 | synthetic splat argument | | params_flow.rb:14:12:14:19 | synthetic splat argument | type tracker without call steps | params_flow.rb:14:12:14:19 | synthetic splat argument | | params_flow.rb:14:18:14:18 | 1 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:14:18:14:18 | 1 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:14:18:14:18 | 1 | type tracker with call steps | params_flow.rb:9:16:9:17 | p1 | -| params_flow.rb:14:18:14:18 | 1 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:14:18:14:18 | 1 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:14:18:14:18 | 1 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:14:18:14:18 | 1 | type tracker with call steps with content splat position 0 | params_flow.rb:9:1:12:3 | synthetic splat parameter | -| params_flow.rb:14:18:14:18 | 1 | type tracker with call steps with content splat position 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | +| params_flow.rb:14:18:14:18 | 1 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:14:18:14:18 | 1 | type tracker with call steps with content element 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | | params_flow.rb:14:18:14:18 | 1 | type tracker without call steps | params_flow.rb:14:12:14:19 | call to taint | | params_flow.rb:14:18:14:18 | 1 | type tracker without call steps | params_flow.rb:14:18:14:18 | 1 | -| params_flow.rb:14:18:14:18 | 1 | type tracker without call steps with content splat position 0 | params_flow.rb:14:1:14:30 | synthetic splat argument | -| params_flow.rb:14:18:14:18 | 1 | type tracker without call steps with content splat position 0 | params_flow.rb:14:12:14:19 | synthetic splat argument | +| params_flow.rb:14:18:14:18 | 1 | type tracker without call steps with content element 0 | params_flow.rb:14:1:14:30 | synthetic splat argument | +| params_flow.rb:14:18:14:18 | 1 | type tracker without call steps with content element 0 | params_flow.rb:14:12:14:19 | synthetic splat argument | | params_flow.rb:14:22:14:29 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:14:22:14:29 | call to taint | type tracker with call steps | params_flow.rb:9:20:9:21 | p2 | -| params_flow.rb:14:22:14:29 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:14:22:14:29 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:14:22:14:29 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:11:5:11:11 | synthetic splat argument | -| params_flow.rb:14:22:14:29 | call to taint | type tracker with call steps with content splat position 1 | params_flow.rb:9:1:12:3 | synthetic splat parameter | +| params_flow.rb:14:22:14:29 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:14:22:14:29 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:11:5:11:11 | synthetic splat argument | | params_flow.rb:14:22:14:29 | call to taint | type tracker without call steps | params_flow.rb:14:22:14:29 | call to taint | -| params_flow.rb:14:22:14:29 | call to taint | type tracker without call steps with content splat position 1 | params_flow.rb:14:1:14:30 | synthetic splat argument | -| params_flow.rb:14:22:14:29 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:14:22:14:29 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:14:1:14:30 | synthetic splat argument | | params_flow.rb:14:22:14:29 | synthetic splat argument | type tracker without call steps | params_flow.rb:14:22:14:29 | synthetic splat argument | | params_flow.rb:14:28:14:28 | 2 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:14:28:14:28 | 2 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:14:28:14:28 | 2 | type tracker with call steps | params_flow.rb:9:20:9:21 | p2 | -| params_flow.rb:14:28:14:28 | 2 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:14:28:14:28 | 2 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:14:28:14:28 | 2 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:14:28:14:28 | 2 | type tracker with call steps with content splat position 0 | params_flow.rb:11:5:11:11 | synthetic splat argument | -| params_flow.rb:14:28:14:28 | 2 | type tracker with call steps with content splat position 1 | params_flow.rb:9:1:12:3 | synthetic splat parameter | +| params_flow.rb:14:28:14:28 | 2 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:14:28:14:28 | 2 | type tracker with call steps with content element 0 | params_flow.rb:11:5:11:11 | synthetic splat argument | | params_flow.rb:14:28:14:28 | 2 | type tracker without call steps | params_flow.rb:14:22:14:29 | call to taint | | params_flow.rb:14:28:14:28 | 2 | type tracker without call steps | params_flow.rb:14:28:14:28 | 2 | -| params_flow.rb:14:28:14:28 | 2 | type tracker without call steps with content splat position 0 | params_flow.rb:14:22:14:29 | synthetic splat argument | -| params_flow.rb:14:28:14:28 | 2 | type tracker without call steps with content splat position 1 | params_flow.rb:14:1:14:30 | synthetic splat argument | +| params_flow.rb:14:28:14:28 | 2 | type tracker without call steps with content element 0 | params_flow.rb:14:22:14:29 | synthetic splat argument | +| params_flow.rb:14:28:14:28 | 2 | type tracker without call steps with content element 1 | params_flow.rb:14:1:14:30 | synthetic splat argument | | params_flow.rb:16:1:19:3 | &block | type tracker without call steps | params_flow.rb:16:1:19:3 | &block | | params_flow.rb:16:1:19:3 | keyword | type tracker without call steps | params_flow.rb:16:1:19:3 | keyword | | params_flow.rb:16:1:19:3 | self in keyword | type tracker with call steps | params_flow.rb:5:1:7:3 | self in sink | | params_flow.rb:16:1:19:3 | self in keyword | type tracker without call steps | params_flow.rb:16:1:19:3 | self in keyword | | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | type tracker without call steps | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | | params_flow.rb:16:13:16:14 | p1 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:16:13:16:14 | p1 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:16:13:16:14 | p1 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:16:13:16:14 | p1 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:16:13:16:14 | p1 | type tracker without call steps | params_flow.rb:16:13:16:14 | p1 | | params_flow.rb:16:13:16:14 | p1 | type tracker without call steps | params_flow.rb:16:13:16:14 | p1 | -| params_flow.rb:16:13:16:14 | p1 | type tracker without call steps with content splat position 0 | params_flow.rb:17:5:17:11 | synthetic splat argument | +| params_flow.rb:16:13:16:14 | p1 | type tracker without call steps with content element 0 | params_flow.rb:17:5:17:11 | synthetic splat argument | | params_flow.rb:16:18:16:19 | p2 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:16:18:16:19 | p2 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:16:18:16:19 | p2 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:16:18:16:19 | p2 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:16:18:16:19 | p2 | type tracker without call steps | params_flow.rb:16:18:16:19 | p2 | | params_flow.rb:16:18:16:19 | p2 | type tracker without call steps | params_flow.rb:16:18:16:19 | p2 | -| params_flow.rb:16:18:16:19 | p2 | type tracker without call steps with content splat position 0 | params_flow.rb:18:5:18:11 | synthetic splat argument | +| params_flow.rb:16:18:16:19 | p2 | type tracker without call steps with content element 0 | params_flow.rb:18:5:18:11 | synthetic splat argument | | params_flow.rb:17:5:17:11 | call to sink | type tracker without call steps | params_flow.rb:17:5:17:11 | call to sink | -| params_flow.rb:17:5:17:11 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:17:5:17:11 | synthetic splat argument | type tracker without call steps | params_flow.rb:17:5:17:11 | synthetic splat argument | | params_flow.rb:18:5:18:11 | call to sink | type tracker without call steps | params_flow.rb:18:5:18:11 | call to sink | | params_flow.rb:18:5:18:11 | call to sink | type tracker without call steps | params_flow.rb:21:1:21:35 | call to keyword | | params_flow.rb:18:5:18:11 | call to sink | type tracker without call steps | params_flow.rb:22:1:22:35 | call to keyword | | params_flow.rb:18:5:18:11 | call to sink | type tracker without call steps | params_flow.rb:23:1:23:41 | call to keyword | | params_flow.rb:18:5:18:11 | call to sink | type tracker without call steps | params_flow.rb:41:1:41:30 | call to keyword | -| params_flow.rb:18:5:18:11 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:18:5:18:11 | synthetic splat argument | type tracker without call steps | params_flow.rb:18:5:18:11 | synthetic splat argument | | params_flow.rb:21:1:21:35 | call to keyword | type tracker without call steps | params_flow.rb:21:1:21:35 | call to keyword | -| params_flow.rb:21:1:21:35 | synthetic hash-splat argument | type tracker with call steps | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | | params_flow.rb:21:1:21:35 | synthetic hash-splat argument | type tracker without call steps | params_flow.rb:21:1:21:35 | synthetic hash-splat argument | | params_flow.rb:21:9:21:10 | :p1 | type tracker without call steps | params_flow.rb:21:9:21:10 | :p1 | | params_flow.rb:21:9:21:20 | Pair | type tracker without call steps | params_flow.rb:21:9:21:20 | Pair | | params_flow.rb:21:13:21:20 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:21:13:21:20 | call to taint | type tracker with call steps | params_flow.rb:16:13:16:14 | p1 | -| params_flow.rb:21:13:21:20 | call to taint | type tracker with call steps with content hash-splat position :p1 | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | -| params_flow.rb:21:13:21:20 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:21:13:21:20 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:21:13:21:20 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:17:5:17:11 | synthetic splat argument | +| params_flow.rb:21:13:21:20 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:21:13:21:20 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:17:5:17:11 | synthetic splat argument | | params_flow.rb:21:13:21:20 | call to taint | type tracker without call steps | params_flow.rb:21:13:21:20 | call to taint | -| params_flow.rb:21:13:21:20 | call to taint | type tracker without call steps with content hash-splat position :p1 | params_flow.rb:21:1:21:35 | synthetic hash-splat argument | -| params_flow.rb:21:13:21:20 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:21:13:21:20 | call to taint | type tracker without call steps with content element :p1 | params_flow.rb:21:1:21:35 | synthetic hash-splat argument | | params_flow.rb:21:13:21:20 | synthetic splat argument | type tracker without call steps | params_flow.rb:21:13:21:20 | synthetic splat argument | | params_flow.rb:21:19:21:19 | 3 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:21:19:21:19 | 3 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:21:19:21:19 | 3 | type tracker with call steps | params_flow.rb:16:13:16:14 | p1 | -| params_flow.rb:21:19:21:19 | 3 | type tracker with call steps with content hash-splat position :p1 | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | -| params_flow.rb:21:19:21:19 | 3 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:21:19:21:19 | 3 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:21:19:21:19 | 3 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:21:19:21:19 | 3 | type tracker with call steps with content splat position 0 | params_flow.rb:17:5:17:11 | synthetic splat argument | +| params_flow.rb:21:19:21:19 | 3 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:21:19:21:19 | 3 | type tracker with call steps with content element 0 | params_flow.rb:17:5:17:11 | synthetic splat argument | | params_flow.rb:21:19:21:19 | 3 | type tracker without call steps | params_flow.rb:21:13:21:20 | call to taint | | params_flow.rb:21:19:21:19 | 3 | type tracker without call steps | params_flow.rb:21:19:21:19 | 3 | -| params_flow.rb:21:19:21:19 | 3 | type tracker without call steps with content hash-splat position :p1 | params_flow.rb:21:1:21:35 | synthetic hash-splat argument | -| params_flow.rb:21:19:21:19 | 3 | type tracker without call steps with content splat position 0 | params_flow.rb:21:13:21:20 | synthetic splat argument | +| params_flow.rb:21:19:21:19 | 3 | type tracker without call steps with content element 0 | params_flow.rb:21:13:21:20 | synthetic splat argument | +| params_flow.rb:21:19:21:19 | 3 | type tracker without call steps with content element :p1 | params_flow.rb:21:1:21:35 | synthetic hash-splat argument | | params_flow.rb:21:23:21:24 | :p2 | type tracker without call steps | params_flow.rb:21:23:21:24 | :p2 | | params_flow.rb:21:23:21:34 | Pair | type tracker without call steps | params_flow.rb:21:23:21:34 | Pair | | params_flow.rb:21:27:21:34 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:21:27:21:34 | call to taint | type tracker with call steps | params_flow.rb:16:18:16:19 | p2 | -| params_flow.rb:21:27:21:34 | call to taint | type tracker with call steps with content hash-splat position :p2 | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | -| params_flow.rb:21:27:21:34 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:21:27:21:34 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:21:27:21:34 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:18:5:18:11 | synthetic splat argument | +| params_flow.rb:21:27:21:34 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:21:27:21:34 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:18:5:18:11 | synthetic splat argument | | params_flow.rb:21:27:21:34 | call to taint | type tracker without call steps | params_flow.rb:21:27:21:34 | call to taint | -| params_flow.rb:21:27:21:34 | call to taint | type tracker without call steps with content hash-splat position :p2 | params_flow.rb:21:1:21:35 | synthetic hash-splat argument | -| params_flow.rb:21:27:21:34 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:21:27:21:34 | call to taint | type tracker without call steps with content element :p2 | params_flow.rb:21:1:21:35 | synthetic hash-splat argument | | params_flow.rb:21:27:21:34 | synthetic splat argument | type tracker without call steps | params_flow.rb:21:27:21:34 | synthetic splat argument | | params_flow.rb:21:33:21:33 | 4 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:21:33:21:33 | 4 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:21:33:21:33 | 4 | type tracker with call steps | params_flow.rb:16:18:16:19 | p2 | -| params_flow.rb:21:33:21:33 | 4 | type tracker with call steps with content hash-splat position :p2 | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | -| params_flow.rb:21:33:21:33 | 4 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:21:33:21:33 | 4 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:21:33:21:33 | 4 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:21:33:21:33 | 4 | type tracker with call steps with content splat position 0 | params_flow.rb:18:5:18:11 | synthetic splat argument | +| params_flow.rb:21:33:21:33 | 4 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:21:33:21:33 | 4 | type tracker with call steps with content element 0 | params_flow.rb:18:5:18:11 | synthetic splat argument | | params_flow.rb:21:33:21:33 | 4 | type tracker without call steps | params_flow.rb:21:27:21:34 | call to taint | | params_flow.rb:21:33:21:33 | 4 | type tracker without call steps | params_flow.rb:21:33:21:33 | 4 | -| params_flow.rb:21:33:21:33 | 4 | type tracker without call steps with content hash-splat position :p2 | params_flow.rb:21:1:21:35 | synthetic hash-splat argument | -| params_flow.rb:21:33:21:33 | 4 | type tracker without call steps with content splat position 0 | params_flow.rb:21:27:21:34 | synthetic splat argument | +| params_flow.rb:21:33:21:33 | 4 | type tracker without call steps with content element 0 | params_flow.rb:21:27:21:34 | synthetic splat argument | +| params_flow.rb:21:33:21:33 | 4 | type tracker without call steps with content element :p2 | params_flow.rb:21:1:21:35 | synthetic hash-splat argument | | params_flow.rb:22:1:22:35 | call to keyword | type tracker without call steps | params_flow.rb:22:1:22:35 | call to keyword | -| params_flow.rb:22:1:22:35 | synthetic hash-splat argument | type tracker with call steps | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | | params_flow.rb:22:1:22:35 | synthetic hash-splat argument | type tracker without call steps | params_flow.rb:22:1:22:35 | synthetic hash-splat argument | | params_flow.rb:22:9:22:10 | :p2 | type tracker without call steps | params_flow.rb:22:9:22:10 | :p2 | | params_flow.rb:22:9:22:20 | Pair | type tracker without call steps | params_flow.rb:22:9:22:20 | Pair | | params_flow.rb:22:13:22:20 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:22:13:22:20 | call to taint | type tracker with call steps | params_flow.rb:16:18:16:19 | p2 | -| params_flow.rb:22:13:22:20 | call to taint | type tracker with call steps with content hash-splat position :p2 | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | -| params_flow.rb:22:13:22:20 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:22:13:22:20 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:22:13:22:20 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:18:5:18:11 | synthetic splat argument | +| params_flow.rb:22:13:22:20 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:22:13:22:20 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:18:5:18:11 | synthetic splat argument | | params_flow.rb:22:13:22:20 | call to taint | type tracker without call steps | params_flow.rb:22:13:22:20 | call to taint | -| params_flow.rb:22:13:22:20 | call to taint | type tracker without call steps with content hash-splat position :p2 | params_flow.rb:22:1:22:35 | synthetic hash-splat argument | -| params_flow.rb:22:13:22:20 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:22:13:22:20 | call to taint | type tracker without call steps with content element :p2 | params_flow.rb:22:1:22:35 | synthetic hash-splat argument | | params_flow.rb:22:13:22:20 | synthetic splat argument | type tracker without call steps | params_flow.rb:22:13:22:20 | synthetic splat argument | | params_flow.rb:22:19:22:19 | 5 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:22:19:22:19 | 5 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:22:19:22:19 | 5 | type tracker with call steps | params_flow.rb:16:18:16:19 | p2 | -| params_flow.rb:22:19:22:19 | 5 | type tracker with call steps with content hash-splat position :p2 | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | -| params_flow.rb:22:19:22:19 | 5 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:22:19:22:19 | 5 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:22:19:22:19 | 5 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:22:19:22:19 | 5 | type tracker with call steps with content splat position 0 | params_flow.rb:18:5:18:11 | synthetic splat argument | +| params_flow.rb:22:19:22:19 | 5 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:22:19:22:19 | 5 | type tracker with call steps with content element 0 | params_flow.rb:18:5:18:11 | synthetic splat argument | | params_flow.rb:22:19:22:19 | 5 | type tracker without call steps | params_flow.rb:22:13:22:20 | call to taint | | params_flow.rb:22:19:22:19 | 5 | type tracker without call steps | params_flow.rb:22:19:22:19 | 5 | -| params_flow.rb:22:19:22:19 | 5 | type tracker without call steps with content hash-splat position :p2 | params_flow.rb:22:1:22:35 | synthetic hash-splat argument | -| params_flow.rb:22:19:22:19 | 5 | type tracker without call steps with content splat position 0 | params_flow.rb:22:13:22:20 | synthetic splat argument | +| params_flow.rb:22:19:22:19 | 5 | type tracker without call steps with content element 0 | params_flow.rb:22:13:22:20 | synthetic splat argument | +| params_flow.rb:22:19:22:19 | 5 | type tracker without call steps with content element :p2 | params_flow.rb:22:1:22:35 | synthetic hash-splat argument | | params_flow.rb:22:23:22:24 | :p1 | type tracker without call steps | params_flow.rb:22:23:22:24 | :p1 | | params_flow.rb:22:23:22:34 | Pair | type tracker without call steps | params_flow.rb:22:23:22:34 | Pair | | params_flow.rb:22:27:22:34 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:22:27:22:34 | call to taint | type tracker with call steps | params_flow.rb:16:13:16:14 | p1 | -| params_flow.rb:22:27:22:34 | call to taint | type tracker with call steps with content hash-splat position :p1 | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | -| params_flow.rb:22:27:22:34 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:22:27:22:34 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:22:27:22:34 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:17:5:17:11 | synthetic splat argument | +| params_flow.rb:22:27:22:34 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:22:27:22:34 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:17:5:17:11 | synthetic splat argument | | params_flow.rb:22:27:22:34 | call to taint | type tracker without call steps | params_flow.rb:22:27:22:34 | call to taint | -| params_flow.rb:22:27:22:34 | call to taint | type tracker without call steps with content hash-splat position :p1 | params_flow.rb:22:1:22:35 | synthetic hash-splat argument | -| params_flow.rb:22:27:22:34 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:22:27:22:34 | call to taint | type tracker without call steps with content element :p1 | params_flow.rb:22:1:22:35 | synthetic hash-splat argument | | params_flow.rb:22:27:22:34 | synthetic splat argument | type tracker without call steps | params_flow.rb:22:27:22:34 | synthetic splat argument | | params_flow.rb:22:33:22:33 | 6 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:22:33:22:33 | 6 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:22:33:22:33 | 6 | type tracker with call steps | params_flow.rb:16:13:16:14 | p1 | -| params_flow.rb:22:33:22:33 | 6 | type tracker with call steps with content hash-splat position :p1 | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | -| params_flow.rb:22:33:22:33 | 6 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:22:33:22:33 | 6 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:22:33:22:33 | 6 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:22:33:22:33 | 6 | type tracker with call steps with content splat position 0 | params_flow.rb:17:5:17:11 | synthetic splat argument | +| params_flow.rb:22:33:22:33 | 6 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:22:33:22:33 | 6 | type tracker with call steps with content element 0 | params_flow.rb:17:5:17:11 | synthetic splat argument | | params_flow.rb:22:33:22:33 | 6 | type tracker without call steps | params_flow.rb:22:27:22:34 | call to taint | | params_flow.rb:22:33:22:33 | 6 | type tracker without call steps | params_flow.rb:22:33:22:33 | 6 | -| params_flow.rb:22:33:22:33 | 6 | type tracker without call steps with content hash-splat position :p1 | params_flow.rb:22:1:22:35 | synthetic hash-splat argument | -| params_flow.rb:22:33:22:33 | 6 | type tracker without call steps with content splat position 0 | params_flow.rb:22:27:22:34 | synthetic splat argument | +| params_flow.rb:22:33:22:33 | 6 | type tracker without call steps with content element 0 | params_flow.rb:22:27:22:34 | synthetic splat argument | +| params_flow.rb:22:33:22:33 | 6 | type tracker without call steps with content element :p1 | params_flow.rb:22:1:22:35 | synthetic hash-splat argument | | params_flow.rb:23:1:23:41 | call to keyword | type tracker without call steps | params_flow.rb:23:1:23:41 | call to keyword | -| params_flow.rb:23:1:23:41 | synthetic hash-splat argument | type tracker with call steps | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | | params_flow.rb:23:1:23:41 | synthetic hash-splat argument | type tracker without call steps | params_flow.rb:23:1:23:41 | synthetic hash-splat argument | | params_flow.rb:23:9:23:11 | :p2 | type tracker without call steps | params_flow.rb:23:9:23:11 | :p2 | | params_flow.rb:23:9:23:23 | Pair | type tracker without call steps | params_flow.rb:23:9:23:23 | Pair | | params_flow.rb:23:16:23:23 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:23:16:23:23 | call to taint | type tracker with call steps | params_flow.rb:16:18:16:19 | p2 | -| params_flow.rb:23:16:23:23 | call to taint | type tracker with call steps with content hash-splat position :p2 | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | -| params_flow.rb:23:16:23:23 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:23:16:23:23 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:23:16:23:23 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:18:5:18:11 | synthetic splat argument | +| params_flow.rb:23:16:23:23 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:23:16:23:23 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:18:5:18:11 | synthetic splat argument | | params_flow.rb:23:16:23:23 | call to taint | type tracker without call steps | params_flow.rb:23:16:23:23 | call to taint | -| params_flow.rb:23:16:23:23 | call to taint | type tracker without call steps with content hash-splat position :p2 | params_flow.rb:23:1:23:41 | synthetic hash-splat argument | -| params_flow.rb:23:16:23:23 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:23:16:23:23 | call to taint | type tracker without call steps with content element :p2 | params_flow.rb:23:1:23:41 | synthetic hash-splat argument | | params_flow.rb:23:16:23:23 | synthetic splat argument | type tracker without call steps | params_flow.rb:23:16:23:23 | synthetic splat argument | | params_flow.rb:23:22:23:22 | 7 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:23:22:23:22 | 7 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:23:22:23:22 | 7 | type tracker with call steps | params_flow.rb:16:18:16:19 | p2 | -| params_flow.rb:23:22:23:22 | 7 | type tracker with call steps with content hash-splat position :p2 | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | -| params_flow.rb:23:22:23:22 | 7 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:23:22:23:22 | 7 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:23:22:23:22 | 7 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:23:22:23:22 | 7 | type tracker with call steps with content splat position 0 | params_flow.rb:18:5:18:11 | synthetic splat argument | +| params_flow.rb:23:22:23:22 | 7 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:23:22:23:22 | 7 | type tracker with call steps with content element 0 | params_flow.rb:18:5:18:11 | synthetic splat argument | | params_flow.rb:23:22:23:22 | 7 | type tracker without call steps | params_flow.rb:23:16:23:23 | call to taint | | params_flow.rb:23:22:23:22 | 7 | type tracker without call steps | params_flow.rb:23:22:23:22 | 7 | -| params_flow.rb:23:22:23:22 | 7 | type tracker without call steps with content hash-splat position :p2 | params_flow.rb:23:1:23:41 | synthetic hash-splat argument | -| params_flow.rb:23:22:23:22 | 7 | type tracker without call steps with content splat position 0 | params_flow.rb:23:16:23:23 | synthetic splat argument | +| params_flow.rb:23:22:23:22 | 7 | type tracker without call steps with content element 0 | params_flow.rb:23:16:23:23 | synthetic splat argument | +| params_flow.rb:23:22:23:22 | 7 | type tracker without call steps with content element :p2 | params_flow.rb:23:1:23:41 | synthetic hash-splat argument | | params_flow.rb:23:26:23:28 | :p1 | type tracker without call steps | params_flow.rb:23:26:23:28 | :p1 | | params_flow.rb:23:26:23:40 | Pair | type tracker without call steps | params_flow.rb:23:26:23:40 | Pair | | params_flow.rb:23:33:23:40 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:23:33:23:40 | call to taint | type tracker with call steps | params_flow.rb:16:13:16:14 | p1 | -| params_flow.rb:23:33:23:40 | call to taint | type tracker with call steps with content hash-splat position :p1 | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | -| params_flow.rb:23:33:23:40 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:23:33:23:40 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:23:33:23:40 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:17:5:17:11 | synthetic splat argument | +| params_flow.rb:23:33:23:40 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:23:33:23:40 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:17:5:17:11 | synthetic splat argument | | params_flow.rb:23:33:23:40 | call to taint | type tracker without call steps | params_flow.rb:23:33:23:40 | call to taint | -| params_flow.rb:23:33:23:40 | call to taint | type tracker without call steps with content hash-splat position :p1 | params_flow.rb:23:1:23:41 | synthetic hash-splat argument | -| params_flow.rb:23:33:23:40 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:23:33:23:40 | call to taint | type tracker without call steps with content element :p1 | params_flow.rb:23:1:23:41 | synthetic hash-splat argument | | params_flow.rb:23:33:23:40 | synthetic splat argument | type tracker without call steps | params_flow.rb:23:33:23:40 | synthetic splat argument | | params_flow.rb:23:39:23:39 | 8 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:23:39:23:39 | 8 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:23:39:23:39 | 8 | type tracker with call steps | params_flow.rb:16:13:16:14 | p1 | -| params_flow.rb:23:39:23:39 | 8 | type tracker with call steps with content hash-splat position :p1 | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | -| params_flow.rb:23:39:23:39 | 8 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:23:39:23:39 | 8 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:23:39:23:39 | 8 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:23:39:23:39 | 8 | type tracker with call steps with content splat position 0 | params_flow.rb:17:5:17:11 | synthetic splat argument | +| params_flow.rb:23:39:23:39 | 8 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:23:39:23:39 | 8 | type tracker with call steps with content element 0 | params_flow.rb:17:5:17:11 | synthetic splat argument | | params_flow.rb:23:39:23:39 | 8 | type tracker without call steps | params_flow.rb:23:33:23:40 | call to taint | | params_flow.rb:23:39:23:39 | 8 | type tracker without call steps | params_flow.rb:23:39:23:39 | 8 | -| params_flow.rb:23:39:23:39 | 8 | type tracker without call steps with content hash-splat position :p1 | params_flow.rb:23:1:23:41 | synthetic hash-splat argument | -| params_flow.rb:23:39:23:39 | 8 | type tracker without call steps with content splat position 0 | params_flow.rb:23:33:23:40 | synthetic splat argument | +| params_flow.rb:23:39:23:39 | 8 | type tracker without call steps with content element 0 | params_flow.rb:23:33:23:40 | synthetic splat argument | +| params_flow.rb:23:39:23:39 | 8 | type tracker without call steps with content element :p1 | params_flow.rb:23:1:23:41 | synthetic hash-splat argument | | params_flow.rb:25:1:31:3 | &block | type tracker without call steps | params_flow.rb:25:1:31:3 | &block | | params_flow.rb:25:1:31:3 | kwargs | type tracker without call steps | params_flow.rb:25:1:31:3 | kwargs | | params_flow.rb:25:1:31:3 | self in kwargs | type tracker with call steps | params_flow.rb:5:1:7:3 | self in sink | | params_flow.rb:25:1:31:3 | self in kwargs | type tracker without call steps | params_flow.rb:25:1:31:3 | self in kwargs | | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | type tracker without call steps | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | | params_flow.rb:25:12:25:13 | p1 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:25:12:25:13 | p1 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:25:12:25:13 | p1 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:25:12:25:13 | p1 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:25:12:25:13 | p1 | type tracker without call steps | params_flow.rb:25:12:25:13 | p1 | | params_flow.rb:25:12:25:13 | p1 | type tracker without call steps | params_flow.rb:25:12:25:13 | p1 | -| params_flow.rb:25:12:25:13 | p1 | type tracker without call steps with content splat position 0 | params_flow.rb:26:5:26:11 | synthetic splat argument | +| params_flow.rb:25:12:25:13 | p1 | type tracker without call steps with content element 0 | params_flow.rb:26:5:26:11 | synthetic splat argument | | params_flow.rb:25:17:25:24 | **kwargs | type tracker without call steps | params_flow.rb:25:17:25:24 | **kwargs | | params_flow.rb:25:19:25:24 | kwargs | type tracker without call steps | params_flow.rb:25:19:25:24 | kwargs | | params_flow.rb:26:5:26:11 | call to sink | type tracker without call steps | params_flow.rb:26:5:26:11 | call to sink | -| params_flow.rb:26:5:26:11 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:26:5:26:11 | synthetic splat argument | type tracker without call steps | params_flow.rb:26:5:26:11 | synthetic splat argument | | params_flow.rb:27:5:27:22 | call to sink | type tracker without call steps | params_flow.rb:27:5:27:22 | call to sink | -| params_flow.rb:27:5:27:22 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:27:5:27:22 | synthetic splat argument | type tracker without call steps | params_flow.rb:27:5:27:22 | synthetic splat argument | | params_flow.rb:27:11:27:21 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:27:11:27:21 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:27:11:27:21 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:27:11:27:21 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:27:11:27:21 | ...[...] | type tracker without call steps | params_flow.rb:27:11:27:21 | ...[...] | -| params_flow.rb:27:11:27:21 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:27:5:27:22 | synthetic splat argument | +| params_flow.rb:27:11:27:21 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:27:5:27:22 | synthetic splat argument | | params_flow.rb:27:11:27:21 | synthetic splat argument | type tracker without call steps | params_flow.rb:27:11:27:21 | synthetic splat argument | | params_flow.rb:27:18:27:20 | :p1 | type tracker without call steps | params_flow.rb:27:18:27:20 | :p1 | -| params_flow.rb:27:18:27:20 | :p1 | type tracker without call steps with content splat position 0 | params_flow.rb:27:11:27:21 | synthetic splat argument | +| params_flow.rb:27:18:27:20 | :p1 | type tracker without call steps with content element 0 | params_flow.rb:27:11:27:21 | synthetic splat argument | | params_flow.rb:28:5:28:22 | call to sink | type tracker without call steps | params_flow.rb:28:5:28:22 | call to sink | -| params_flow.rb:28:5:28:22 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:28:5:28:22 | synthetic splat argument | type tracker without call steps | params_flow.rb:28:5:28:22 | synthetic splat argument | | params_flow.rb:28:11:28:21 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:28:11:28:21 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:28:11:28:21 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:28:11:28:21 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:28:11:28:21 | ...[...] | type tracker without call steps | params_flow.rb:28:11:28:21 | ...[...] | -| params_flow.rb:28:11:28:21 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:28:5:28:22 | synthetic splat argument | +| params_flow.rb:28:11:28:21 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:28:5:28:22 | synthetic splat argument | | params_flow.rb:28:11:28:21 | synthetic splat argument | type tracker without call steps | params_flow.rb:28:11:28:21 | synthetic splat argument | | params_flow.rb:28:18:28:20 | :p2 | type tracker without call steps | params_flow.rb:28:18:28:20 | :p2 | -| params_flow.rb:28:18:28:20 | :p2 | type tracker without call steps with content splat position 0 | params_flow.rb:28:11:28:21 | synthetic splat argument | +| params_flow.rb:28:18:28:20 | :p2 | type tracker without call steps with content element 0 | params_flow.rb:28:11:28:21 | synthetic splat argument | | params_flow.rb:29:5:29:22 | call to sink | type tracker without call steps | params_flow.rb:29:5:29:22 | call to sink | -| params_flow.rb:29:5:29:22 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:29:5:29:22 | synthetic splat argument | type tracker without call steps | params_flow.rb:29:5:29:22 | synthetic splat argument | | params_flow.rb:29:11:29:21 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:29:11:29:21 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:29:11:29:21 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:29:11:29:21 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:29:11:29:21 | ...[...] | type tracker without call steps | params_flow.rb:29:11:29:21 | ...[...] | -| params_flow.rb:29:11:29:21 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:29:5:29:22 | synthetic splat argument | +| params_flow.rb:29:11:29:21 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:29:5:29:22 | synthetic splat argument | | params_flow.rb:29:11:29:21 | synthetic splat argument | type tracker without call steps | params_flow.rb:29:11:29:21 | synthetic splat argument | | params_flow.rb:29:18:29:20 | :p3 | type tracker without call steps | params_flow.rb:29:18:29:20 | :p3 | -| params_flow.rb:29:18:29:20 | :p3 | type tracker without call steps with content splat position 0 | params_flow.rb:29:11:29:21 | synthetic splat argument | +| params_flow.rb:29:18:29:20 | :p3 | type tracker without call steps with content element 0 | params_flow.rb:29:11:29:21 | synthetic splat argument | | params_flow.rb:30:5:30:22 | call to sink | type tracker without call steps | params_flow.rb:30:5:30:22 | call to sink | | params_flow.rb:30:5:30:22 | call to sink | type tracker without call steps | params_flow.rb:33:1:33:58 | call to kwargs | | params_flow.rb:30:5:30:22 | call to sink | type tracker without call steps | params_flow.rb:35:1:35:29 | call to kwargs | | params_flow.rb:30:5:30:22 | call to sink | type tracker without call steps | params_flow.rb:38:1:38:14 | call to kwargs | -| params_flow.rb:30:5:30:22 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:30:5:30:22 | synthetic splat argument | type tracker without call steps | params_flow.rb:30:5:30:22 | synthetic splat argument | | params_flow.rb:30:11:30:21 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:30:11:30:21 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:30:11:30:21 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:30:11:30:21 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:30:11:30:21 | ...[...] | type tracker without call steps | params_flow.rb:30:11:30:21 | ...[...] | -| params_flow.rb:30:11:30:21 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:30:5:30:22 | synthetic splat argument | +| params_flow.rb:30:11:30:21 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:30:5:30:22 | synthetic splat argument | | params_flow.rb:30:11:30:21 | synthetic splat argument | type tracker without call steps | params_flow.rb:30:11:30:21 | synthetic splat argument | | params_flow.rb:30:18:30:20 | :p4 | type tracker without call steps | params_flow.rb:30:18:30:20 | :p4 | -| params_flow.rb:30:18:30:20 | :p4 | type tracker without call steps with content splat position 0 | params_flow.rb:30:11:30:21 | synthetic splat argument | +| params_flow.rb:30:18:30:20 | :p4 | type tracker without call steps with content element 0 | params_flow.rb:30:11:30:21 | synthetic splat argument | | params_flow.rb:33:1:33:58 | call to kwargs | type tracker without call steps | params_flow.rb:33:1:33:58 | call to kwargs | -| params_flow.rb:33:1:33:58 | synthetic hash-splat argument | type tracker with call steps | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | | params_flow.rb:33:1:33:58 | synthetic hash-splat argument | type tracker with call steps | params_flow.rb:25:17:25:24 | **kwargs | | params_flow.rb:33:1:33:58 | synthetic hash-splat argument | type tracker without call steps | params_flow.rb:33:1:33:58 | synthetic hash-splat argument | | params_flow.rb:33:8:33:9 | :p1 | type tracker without call steps | params_flow.rb:33:8:33:9 | :p1 | @@ -831,94 +726,74 @@ track | params_flow.rb:33:12:33:19 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:33:12:33:19 | call to taint | type tracker with call steps | params_flow.rb:25:12:25:13 | p1 | | params_flow.rb:33:12:33:19 | call to taint | type tracker with call steps | params_flow.rb:27:11:27:21 | ...[...] | -| params_flow.rb:33:12:33:19 | call to taint | type tracker with call steps with content hash-splat position :p1 | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | -| params_flow.rb:33:12:33:19 | call to taint | type tracker with call steps with content hash-splat position :p1 | params_flow.rb:25:17:25:24 | **kwargs | -| params_flow.rb:33:12:33:19 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:33:12:33:19 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:33:12:33:19 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:26:5:26:11 | synthetic splat argument | -| params_flow.rb:33:12:33:19 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:27:5:27:22 | synthetic splat argument | +| params_flow.rb:33:12:33:19 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:33:12:33:19 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:26:5:26:11 | synthetic splat argument | +| params_flow.rb:33:12:33:19 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:27:5:27:22 | synthetic splat argument | +| params_flow.rb:33:12:33:19 | call to taint | type tracker with call steps with content element :p1 | params_flow.rb:25:17:25:24 | **kwargs | | params_flow.rb:33:12:33:19 | call to taint | type tracker without call steps | params_flow.rb:33:12:33:19 | call to taint | -| params_flow.rb:33:12:33:19 | call to taint | type tracker without call steps with content hash-splat position :p1 | params_flow.rb:33:1:33:58 | synthetic hash-splat argument | -| params_flow.rb:33:12:33:19 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:33:12:33:19 | call to taint | type tracker without call steps with content element :p1 | params_flow.rb:33:1:33:58 | synthetic hash-splat argument | | params_flow.rb:33:12:33:19 | synthetic splat argument | type tracker without call steps | params_flow.rb:33:12:33:19 | synthetic splat argument | | params_flow.rb:33:18:33:18 | 9 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:33:18:33:18 | 9 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:33:18:33:18 | 9 | type tracker with call steps | params_flow.rb:25:12:25:13 | p1 | | params_flow.rb:33:18:33:18 | 9 | type tracker with call steps | params_flow.rb:27:11:27:21 | ...[...] | -| params_flow.rb:33:18:33:18 | 9 | type tracker with call steps with content hash-splat position :p1 | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | -| params_flow.rb:33:18:33:18 | 9 | type tracker with call steps with content hash-splat position :p1 | params_flow.rb:25:17:25:24 | **kwargs | -| params_flow.rb:33:18:33:18 | 9 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:33:18:33:18 | 9 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:33:18:33:18 | 9 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:33:18:33:18 | 9 | type tracker with call steps with content splat position 0 | params_flow.rb:26:5:26:11 | synthetic splat argument | -| params_flow.rb:33:18:33:18 | 9 | type tracker with call steps with content splat position 0 | params_flow.rb:27:5:27:22 | synthetic splat argument | +| params_flow.rb:33:18:33:18 | 9 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:33:18:33:18 | 9 | type tracker with call steps with content element 0 | params_flow.rb:26:5:26:11 | synthetic splat argument | +| params_flow.rb:33:18:33:18 | 9 | type tracker with call steps with content element 0 | params_flow.rb:27:5:27:22 | synthetic splat argument | +| params_flow.rb:33:18:33:18 | 9 | type tracker with call steps with content element :p1 | params_flow.rb:25:17:25:24 | **kwargs | | params_flow.rb:33:18:33:18 | 9 | type tracker without call steps | params_flow.rb:33:12:33:19 | call to taint | | params_flow.rb:33:18:33:18 | 9 | type tracker without call steps | params_flow.rb:33:18:33:18 | 9 | -| params_flow.rb:33:18:33:18 | 9 | type tracker without call steps with content hash-splat position :p1 | params_flow.rb:33:1:33:58 | synthetic hash-splat argument | -| params_flow.rb:33:18:33:18 | 9 | type tracker without call steps with content splat position 0 | params_flow.rb:33:12:33:19 | synthetic splat argument | +| params_flow.rb:33:18:33:18 | 9 | type tracker without call steps with content element 0 | params_flow.rb:33:12:33:19 | synthetic splat argument | +| params_flow.rb:33:18:33:18 | 9 | type tracker without call steps with content element :p1 | params_flow.rb:33:1:33:58 | synthetic hash-splat argument | | params_flow.rb:33:22:33:23 | :p2 | type tracker without call steps | params_flow.rb:33:22:33:23 | :p2 | | params_flow.rb:33:22:33:34 | Pair | type tracker without call steps | params_flow.rb:33:22:33:34 | Pair | | params_flow.rb:33:26:33:34 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:33:26:33:34 | call to taint | type tracker with call steps | params_flow.rb:28:11:28:21 | ...[...] | -| params_flow.rb:33:26:33:34 | call to taint | type tracker with call steps with content hash-splat position :p2 | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | -| params_flow.rb:33:26:33:34 | call to taint | type tracker with call steps with content hash-splat position :p2 | params_flow.rb:25:17:25:24 | **kwargs | -| params_flow.rb:33:26:33:34 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:33:26:33:34 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:33:26:33:34 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:28:5:28:22 | synthetic splat argument | +| params_flow.rb:33:26:33:34 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:33:26:33:34 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:28:5:28:22 | synthetic splat argument | +| params_flow.rb:33:26:33:34 | call to taint | type tracker with call steps with content element :p2 | params_flow.rb:25:17:25:24 | **kwargs | | params_flow.rb:33:26:33:34 | call to taint | type tracker without call steps | params_flow.rb:33:26:33:34 | call to taint | -| params_flow.rb:33:26:33:34 | call to taint | type tracker without call steps with content hash-splat position :p2 | params_flow.rb:33:1:33:58 | synthetic hash-splat argument | -| params_flow.rb:33:26:33:34 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:33:26:33:34 | call to taint | type tracker without call steps with content element :p2 | params_flow.rb:33:1:33:58 | synthetic hash-splat argument | | params_flow.rb:33:26:33:34 | synthetic splat argument | type tracker without call steps | params_flow.rb:33:26:33:34 | synthetic splat argument | | params_flow.rb:33:32:33:33 | 10 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:33:32:33:33 | 10 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:33:32:33:33 | 10 | type tracker with call steps | params_flow.rb:28:11:28:21 | ...[...] | -| params_flow.rb:33:32:33:33 | 10 | type tracker with call steps with content hash-splat position :p2 | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | -| params_flow.rb:33:32:33:33 | 10 | type tracker with call steps with content hash-splat position :p2 | params_flow.rb:25:17:25:24 | **kwargs | -| params_flow.rb:33:32:33:33 | 10 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:33:32:33:33 | 10 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:33:32:33:33 | 10 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:33:32:33:33 | 10 | type tracker with call steps with content splat position 0 | params_flow.rb:28:5:28:22 | synthetic splat argument | +| params_flow.rb:33:32:33:33 | 10 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:33:32:33:33 | 10 | type tracker with call steps with content element 0 | params_flow.rb:28:5:28:22 | synthetic splat argument | +| params_flow.rb:33:32:33:33 | 10 | type tracker with call steps with content element :p2 | params_flow.rb:25:17:25:24 | **kwargs | | params_flow.rb:33:32:33:33 | 10 | type tracker without call steps | params_flow.rb:33:26:33:34 | call to taint | | params_flow.rb:33:32:33:33 | 10 | type tracker without call steps | params_flow.rb:33:32:33:33 | 10 | -| params_flow.rb:33:32:33:33 | 10 | type tracker without call steps with content hash-splat position :p2 | params_flow.rb:33:1:33:58 | synthetic hash-splat argument | -| params_flow.rb:33:32:33:33 | 10 | type tracker without call steps with content splat position 0 | params_flow.rb:33:26:33:34 | synthetic splat argument | +| params_flow.rb:33:32:33:33 | 10 | type tracker without call steps with content element 0 | params_flow.rb:33:26:33:34 | synthetic splat argument | +| params_flow.rb:33:32:33:33 | 10 | type tracker without call steps with content element :p2 | params_flow.rb:33:1:33:58 | synthetic hash-splat argument | | params_flow.rb:33:37:33:38 | :p3 | type tracker without call steps | params_flow.rb:33:37:33:38 | :p3 | | params_flow.rb:33:37:33:49 | Pair | type tracker without call steps | params_flow.rb:33:37:33:49 | Pair | | params_flow.rb:33:41:33:49 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:33:41:33:49 | call to taint | type tracker with call steps | params_flow.rb:29:11:29:21 | ...[...] | -| params_flow.rb:33:41:33:49 | call to taint | type tracker with call steps with content hash-splat position :p3 | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | -| params_flow.rb:33:41:33:49 | call to taint | type tracker with call steps with content hash-splat position :p3 | params_flow.rb:25:17:25:24 | **kwargs | -| params_flow.rb:33:41:33:49 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:33:41:33:49 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:33:41:33:49 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:29:5:29:22 | synthetic splat argument | +| params_flow.rb:33:41:33:49 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:33:41:33:49 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:29:5:29:22 | synthetic splat argument | +| params_flow.rb:33:41:33:49 | call to taint | type tracker with call steps with content element :p3 | params_flow.rb:25:17:25:24 | **kwargs | | params_flow.rb:33:41:33:49 | call to taint | type tracker without call steps | params_flow.rb:33:41:33:49 | call to taint | -| params_flow.rb:33:41:33:49 | call to taint | type tracker without call steps with content hash-splat position :p3 | params_flow.rb:33:1:33:58 | synthetic hash-splat argument | -| params_flow.rb:33:41:33:49 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:33:41:33:49 | call to taint | type tracker without call steps with content element :p3 | params_flow.rb:33:1:33:58 | synthetic hash-splat argument | | params_flow.rb:33:41:33:49 | synthetic splat argument | type tracker without call steps | params_flow.rb:33:41:33:49 | synthetic splat argument | | params_flow.rb:33:47:33:48 | 11 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:33:47:33:48 | 11 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:33:47:33:48 | 11 | type tracker with call steps | params_flow.rb:29:11:29:21 | ...[...] | -| params_flow.rb:33:47:33:48 | 11 | type tracker with call steps with content hash-splat position :p3 | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | -| params_flow.rb:33:47:33:48 | 11 | type tracker with call steps with content hash-splat position :p3 | params_flow.rb:25:17:25:24 | **kwargs | -| params_flow.rb:33:47:33:48 | 11 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:33:47:33:48 | 11 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:33:47:33:48 | 11 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:33:47:33:48 | 11 | type tracker with call steps with content splat position 0 | params_flow.rb:29:5:29:22 | synthetic splat argument | +| params_flow.rb:33:47:33:48 | 11 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:33:47:33:48 | 11 | type tracker with call steps with content element 0 | params_flow.rb:29:5:29:22 | synthetic splat argument | +| params_flow.rb:33:47:33:48 | 11 | type tracker with call steps with content element :p3 | params_flow.rb:25:17:25:24 | **kwargs | | params_flow.rb:33:47:33:48 | 11 | type tracker without call steps | params_flow.rb:33:41:33:49 | call to taint | | params_flow.rb:33:47:33:48 | 11 | type tracker without call steps | params_flow.rb:33:47:33:48 | 11 | -| params_flow.rb:33:47:33:48 | 11 | type tracker without call steps with content hash-splat position :p3 | params_flow.rb:33:1:33:58 | synthetic hash-splat argument | -| params_flow.rb:33:47:33:48 | 11 | type tracker without call steps with content splat position 0 | params_flow.rb:33:41:33:49 | synthetic splat argument | +| params_flow.rb:33:47:33:48 | 11 | type tracker without call steps with content element 0 | params_flow.rb:33:41:33:49 | synthetic splat argument | +| params_flow.rb:33:47:33:48 | 11 | type tracker without call steps with content element :p3 | params_flow.rb:33:1:33:58 | synthetic hash-splat argument | | params_flow.rb:33:52:33:53 | :p4 | type tracker without call steps | params_flow.rb:33:52:33:53 | :p4 | | params_flow.rb:33:52:33:57 | Pair | type tracker without call steps | params_flow.rb:33:52:33:57 | Pair | | params_flow.rb:33:56:33:57 | "" | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:33:56:33:57 | "" | type tracker with call steps | params_flow.rb:30:11:30:21 | ...[...] | -| params_flow.rb:33:56:33:57 | "" | type tracker with call steps with content hash-splat position :p4 | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | -| params_flow.rb:33:56:33:57 | "" | type tracker with call steps with content hash-splat position :p4 | params_flow.rb:25:17:25:24 | **kwargs | -| params_flow.rb:33:56:33:57 | "" | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:33:56:33:57 | "" | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:33:56:33:57 | "" | type tracker with call steps with content splat position 0 | params_flow.rb:30:5:30:22 | synthetic splat argument | +| params_flow.rb:33:56:33:57 | "" | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:33:56:33:57 | "" | type tracker with call steps with content element 0 | params_flow.rb:30:5:30:22 | synthetic splat argument | +| params_flow.rb:33:56:33:57 | "" | type tracker with call steps with content element :p4 | params_flow.rb:25:17:25:24 | **kwargs | | params_flow.rb:33:56:33:57 | "" | type tracker without call steps | params_flow.rb:33:56:33:57 | "" | -| params_flow.rb:33:56:33:57 | "" | type tracker without call steps with content hash-splat position :p4 | params_flow.rb:33:1:33:58 | synthetic hash-splat argument | +| params_flow.rb:33:56:33:57 | "" | type tracker without call steps with content element :p4 | params_flow.rb:33:1:33:58 | synthetic hash-splat argument | | params_flow.rb:34:1:34:4 | args | type tracker without call steps | params_flow.rb:34:1:34:4 | args | | params_flow.rb:34:8:34:32 | Hash | type tracker without call steps | params_flow.rb:34:8:34:32 | Hash | | params_flow.rb:34:8:34:32 | call to [] | type tracker without call steps | params_flow.rb:34:8:34:32 | call to [] | @@ -928,47 +803,41 @@ track | params_flow.rb:34:10:34:22 | Pair | type tracker without call steps | params_flow.rb:34:10:34:22 | Pair | | params_flow.rb:34:14:34:22 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:34:14:34:22 | call to taint | type tracker with call steps | params_flow.rb:29:11:29:21 | ...[...] | +| params_flow.rb:34:14:34:22 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:34:14:34:22 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:29:5:29:22 | synthetic splat argument | | params_flow.rb:34:14:34:22 | call to taint | type tracker with call steps with content element :p3 | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | | params_flow.rb:34:14:34:22 | call to taint | type tracker with call steps with content element :p3 | params_flow.rb:25:17:25:24 | **kwargs | -| params_flow.rb:34:14:34:22 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:34:14:34:22 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:34:14:34:22 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:29:5:29:22 | synthetic splat argument | | params_flow.rb:34:14:34:22 | call to taint | type tracker without call steps | params_flow.rb:34:14:34:22 | call to taint | | params_flow.rb:34:14:34:22 | call to taint | type tracker without call steps with content element :p3 | params_flow.rb:34:8:34:32 | call to [] | | params_flow.rb:34:14:34:22 | call to taint | type tracker without call steps with content element :p3 | params_flow.rb:34:8:34:32 | synthetic hash-splat argument | | params_flow.rb:34:14:34:22 | call to taint | type tracker without call steps with content element :p3 | params_flow.rb:35:23:35:28 | ** ... | -| params_flow.rb:34:14:34:22 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:34:14:34:22 | synthetic splat argument | type tracker without call steps | params_flow.rb:34:14:34:22 | synthetic splat argument | | params_flow.rb:34:20:34:21 | 12 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:34:20:34:21 | 12 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:34:20:34:21 | 12 | type tracker with call steps | params_flow.rb:29:11:29:21 | ...[...] | +| params_flow.rb:34:20:34:21 | 12 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:34:20:34:21 | 12 | type tracker with call steps with content element 0 | params_flow.rb:29:5:29:22 | synthetic splat argument | | params_flow.rb:34:20:34:21 | 12 | type tracker with call steps with content element :p3 | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | | params_flow.rb:34:20:34:21 | 12 | type tracker with call steps with content element :p3 | params_flow.rb:25:17:25:24 | **kwargs | -| params_flow.rb:34:20:34:21 | 12 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:34:20:34:21 | 12 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:34:20:34:21 | 12 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:34:20:34:21 | 12 | type tracker with call steps with content splat position 0 | params_flow.rb:29:5:29:22 | synthetic splat argument | | params_flow.rb:34:20:34:21 | 12 | type tracker without call steps | params_flow.rb:34:14:34:22 | call to taint | | params_flow.rb:34:20:34:21 | 12 | type tracker without call steps | params_flow.rb:34:20:34:21 | 12 | +| params_flow.rb:34:20:34:21 | 12 | type tracker without call steps with content element 0 | params_flow.rb:34:14:34:22 | synthetic splat argument | | params_flow.rb:34:20:34:21 | 12 | type tracker without call steps with content element :p3 | params_flow.rb:34:8:34:32 | call to [] | | params_flow.rb:34:20:34:21 | 12 | type tracker without call steps with content element :p3 | params_flow.rb:34:8:34:32 | synthetic hash-splat argument | | params_flow.rb:34:20:34:21 | 12 | type tracker without call steps with content element :p3 | params_flow.rb:35:23:35:28 | ** ... | -| params_flow.rb:34:20:34:21 | 12 | type tracker without call steps with content splat position 0 | params_flow.rb:34:14:34:22 | synthetic splat argument | | params_flow.rb:34:25:34:26 | :p4 | type tracker without call steps | params_flow.rb:34:25:34:26 | :p4 | | params_flow.rb:34:25:34:30 | Pair | type tracker without call steps | params_flow.rb:34:25:34:30 | Pair | | params_flow.rb:34:29:34:30 | "" | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:34:29:34:30 | "" | type tracker with call steps | params_flow.rb:30:11:30:21 | ...[...] | +| params_flow.rb:34:29:34:30 | "" | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:34:29:34:30 | "" | type tracker with call steps with content element 0 | params_flow.rb:30:5:30:22 | synthetic splat argument | | params_flow.rb:34:29:34:30 | "" | type tracker with call steps with content element :p4 | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | | params_flow.rb:34:29:34:30 | "" | type tracker with call steps with content element :p4 | params_flow.rb:25:17:25:24 | **kwargs | -| params_flow.rb:34:29:34:30 | "" | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:34:29:34:30 | "" | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:34:29:34:30 | "" | type tracker with call steps with content splat position 0 | params_flow.rb:30:5:30:22 | synthetic splat argument | | params_flow.rb:34:29:34:30 | "" | type tracker without call steps | params_flow.rb:34:29:34:30 | "" | | params_flow.rb:34:29:34:30 | "" | type tracker without call steps with content element :p4 | params_flow.rb:34:8:34:32 | call to [] | | params_flow.rb:34:29:34:30 | "" | type tracker without call steps with content element :p4 | params_flow.rb:34:8:34:32 | synthetic hash-splat argument | | params_flow.rb:34:29:34:30 | "" | type tracker without call steps with content element :p4 | params_flow.rb:35:23:35:28 | ** ... | | params_flow.rb:35:1:35:29 | call to kwargs | type tracker without call steps | params_flow.rb:35:1:35:29 | call to kwargs | -| params_flow.rb:35:1:35:29 | synthetic hash-splat argument | type tracker with call steps | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | | params_flow.rb:35:1:35:29 | synthetic hash-splat argument | type tracker with call steps | params_flow.rb:25:17:25:24 | **kwargs | | params_flow.rb:35:1:35:29 | synthetic hash-splat argument | type tracker without call steps | params_flow.rb:35:1:35:29 | synthetic hash-splat argument | | params_flow.rb:35:8:35:9 | :p1 | type tracker without call steps | params_flow.rb:35:8:35:9 | :p1 | @@ -976,31 +845,25 @@ track | params_flow.rb:35:12:35:20 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:35:12:35:20 | call to taint | type tracker with call steps | params_flow.rb:25:12:25:13 | p1 | | params_flow.rb:35:12:35:20 | call to taint | type tracker with call steps | params_flow.rb:27:11:27:21 | ...[...] | -| params_flow.rb:35:12:35:20 | call to taint | type tracker with call steps with content hash-splat position :p1 | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | -| params_flow.rb:35:12:35:20 | call to taint | type tracker with call steps with content hash-splat position :p1 | params_flow.rb:25:17:25:24 | **kwargs | -| params_flow.rb:35:12:35:20 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:35:12:35:20 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:35:12:35:20 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:26:5:26:11 | synthetic splat argument | -| params_flow.rb:35:12:35:20 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:27:5:27:22 | synthetic splat argument | +| params_flow.rb:35:12:35:20 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:35:12:35:20 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:26:5:26:11 | synthetic splat argument | +| params_flow.rb:35:12:35:20 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:27:5:27:22 | synthetic splat argument | +| params_flow.rb:35:12:35:20 | call to taint | type tracker with call steps with content element :p1 | params_flow.rb:25:17:25:24 | **kwargs | | params_flow.rb:35:12:35:20 | call to taint | type tracker without call steps | params_flow.rb:35:12:35:20 | call to taint | -| params_flow.rb:35:12:35:20 | call to taint | type tracker without call steps with content hash-splat position :p1 | params_flow.rb:35:1:35:29 | synthetic hash-splat argument | -| params_flow.rb:35:12:35:20 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:35:12:35:20 | call to taint | type tracker without call steps with content element :p1 | params_flow.rb:35:1:35:29 | synthetic hash-splat argument | | params_flow.rb:35:12:35:20 | synthetic splat argument | type tracker without call steps | params_flow.rb:35:12:35:20 | synthetic splat argument | | params_flow.rb:35:18:35:19 | 13 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:35:18:35:19 | 13 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:35:18:35:19 | 13 | type tracker with call steps | params_flow.rb:25:12:25:13 | p1 | | params_flow.rb:35:18:35:19 | 13 | type tracker with call steps | params_flow.rb:27:11:27:21 | ...[...] | -| params_flow.rb:35:18:35:19 | 13 | type tracker with call steps with content hash-splat position :p1 | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | -| params_flow.rb:35:18:35:19 | 13 | type tracker with call steps with content hash-splat position :p1 | params_flow.rb:25:17:25:24 | **kwargs | -| params_flow.rb:35:18:35:19 | 13 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:35:18:35:19 | 13 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:35:18:35:19 | 13 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:35:18:35:19 | 13 | type tracker with call steps with content splat position 0 | params_flow.rb:26:5:26:11 | synthetic splat argument | -| params_flow.rb:35:18:35:19 | 13 | type tracker with call steps with content splat position 0 | params_flow.rb:27:5:27:22 | synthetic splat argument | +| params_flow.rb:35:18:35:19 | 13 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:35:18:35:19 | 13 | type tracker with call steps with content element 0 | params_flow.rb:26:5:26:11 | synthetic splat argument | +| params_flow.rb:35:18:35:19 | 13 | type tracker with call steps with content element 0 | params_flow.rb:27:5:27:22 | synthetic splat argument | +| params_flow.rb:35:18:35:19 | 13 | type tracker with call steps with content element :p1 | params_flow.rb:25:17:25:24 | **kwargs | | params_flow.rb:35:18:35:19 | 13 | type tracker without call steps | params_flow.rb:35:12:35:20 | call to taint | | params_flow.rb:35:18:35:19 | 13 | type tracker without call steps | params_flow.rb:35:18:35:19 | 13 | -| params_flow.rb:35:18:35:19 | 13 | type tracker without call steps with content hash-splat position :p1 | params_flow.rb:35:1:35:29 | synthetic hash-splat argument | -| params_flow.rb:35:18:35:19 | 13 | type tracker without call steps with content splat position 0 | params_flow.rb:35:12:35:20 | synthetic splat argument | +| params_flow.rb:35:18:35:19 | 13 | type tracker without call steps with content element 0 | params_flow.rb:35:12:35:20 | synthetic splat argument | +| params_flow.rb:35:18:35:19 | 13 | type tracker without call steps with content element :p1 | params_flow.rb:35:1:35:29 | synthetic hash-splat argument | | params_flow.rb:35:23:35:28 | ** ... | type tracker with call steps | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | | params_flow.rb:35:23:35:28 | ** ... | type tracker with call steps | params_flow.rb:25:17:25:24 | **kwargs | | params_flow.rb:35:23:35:28 | ** ... | type tracker without call steps | params_flow.rb:35:23:35:28 | ** ... | @@ -1014,65 +877,57 @@ track | params_flow.rb:37:16:37:24 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:37:16:37:24 | call to taint | type tracker with call steps | params_flow.rb:25:12:25:13 | p1 | | params_flow.rb:37:16:37:24 | call to taint | type tracker with call steps | params_flow.rb:27:11:27:21 | ...[...] | +| params_flow.rb:37:16:37:24 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:37:16:37:24 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:26:5:26:11 | synthetic splat argument | +| params_flow.rb:37:16:37:24 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:27:5:27:22 | synthetic splat argument | | params_flow.rb:37:16:37:24 | call to taint | type tracker with call steps with content element :p1 | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | | params_flow.rb:37:16:37:24 | call to taint | type tracker with call steps with content element :p1 | params_flow.rb:25:17:25:24 | **kwargs | -| params_flow.rb:37:16:37:24 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:37:16:37:24 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:37:16:37:24 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:26:5:26:11 | synthetic splat argument | -| params_flow.rb:37:16:37:24 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:27:5:27:22 | synthetic splat argument | | params_flow.rb:37:16:37:24 | call to taint | type tracker without call steps | params_flow.rb:37:16:37:24 | call to taint | | params_flow.rb:37:16:37:24 | call to taint | type tracker without call steps with content element :p1 | params_flow.rb:37:8:37:44 | call to [] | | params_flow.rb:37:16:37:24 | call to taint | type tracker without call steps with content element :p1 | params_flow.rb:37:8:37:44 | synthetic hash-splat argument | | params_flow.rb:37:16:37:24 | call to taint | type tracker without call steps with content element :p1 | params_flow.rb:38:8:38:13 | ** ... | -| params_flow.rb:37:16:37:24 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:37:16:37:24 | synthetic splat argument | type tracker without call steps | params_flow.rb:37:16:37:24 | synthetic splat argument | | params_flow.rb:37:22:37:23 | 14 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:37:22:37:23 | 14 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:37:22:37:23 | 14 | type tracker with call steps | params_flow.rb:25:12:25:13 | p1 | | params_flow.rb:37:22:37:23 | 14 | type tracker with call steps | params_flow.rb:27:11:27:21 | ...[...] | +| params_flow.rb:37:22:37:23 | 14 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:37:22:37:23 | 14 | type tracker with call steps with content element 0 | params_flow.rb:26:5:26:11 | synthetic splat argument | +| params_flow.rb:37:22:37:23 | 14 | type tracker with call steps with content element 0 | params_flow.rb:27:5:27:22 | synthetic splat argument | | params_flow.rb:37:22:37:23 | 14 | type tracker with call steps with content element :p1 | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | | params_flow.rb:37:22:37:23 | 14 | type tracker with call steps with content element :p1 | params_flow.rb:25:17:25:24 | **kwargs | -| params_flow.rb:37:22:37:23 | 14 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:37:22:37:23 | 14 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:37:22:37:23 | 14 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:37:22:37:23 | 14 | type tracker with call steps with content splat position 0 | params_flow.rb:26:5:26:11 | synthetic splat argument | -| params_flow.rb:37:22:37:23 | 14 | type tracker with call steps with content splat position 0 | params_flow.rb:27:5:27:22 | synthetic splat argument | | params_flow.rb:37:22:37:23 | 14 | type tracker without call steps | params_flow.rb:37:16:37:24 | call to taint | | params_flow.rb:37:22:37:23 | 14 | type tracker without call steps | params_flow.rb:37:22:37:23 | 14 | +| params_flow.rb:37:22:37:23 | 14 | type tracker without call steps with content element 0 | params_flow.rb:37:16:37:24 | synthetic splat argument | | params_flow.rb:37:22:37:23 | 14 | type tracker without call steps with content element :p1 | params_flow.rb:37:8:37:44 | call to [] | | params_flow.rb:37:22:37:23 | 14 | type tracker without call steps with content element :p1 | params_flow.rb:37:8:37:44 | synthetic hash-splat argument | | params_flow.rb:37:22:37:23 | 14 | type tracker without call steps with content element :p1 | params_flow.rb:38:8:38:13 | ** ... | -| params_flow.rb:37:22:37:23 | 14 | type tracker without call steps with content splat position 0 | params_flow.rb:37:16:37:24 | synthetic splat argument | | params_flow.rb:37:27:37:29 | :p2 | type tracker without call steps | params_flow.rb:37:27:37:29 | :p2 | | params_flow.rb:37:27:37:42 | Pair | type tracker without call steps | params_flow.rb:37:27:37:42 | Pair | | params_flow.rb:37:34:37:42 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:37:34:37:42 | call to taint | type tracker with call steps | params_flow.rb:28:11:28:21 | ...[...] | +| params_flow.rb:37:34:37:42 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:37:34:37:42 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:28:5:28:22 | synthetic splat argument | | params_flow.rb:37:34:37:42 | call to taint | type tracker with call steps with content element :p2 | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | | params_flow.rb:37:34:37:42 | call to taint | type tracker with call steps with content element :p2 | params_flow.rb:25:17:25:24 | **kwargs | -| params_flow.rb:37:34:37:42 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:37:34:37:42 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:37:34:37:42 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:28:5:28:22 | synthetic splat argument | | params_flow.rb:37:34:37:42 | call to taint | type tracker without call steps | params_flow.rb:37:34:37:42 | call to taint | | params_flow.rb:37:34:37:42 | call to taint | type tracker without call steps with content element :p2 | params_flow.rb:37:8:37:44 | call to [] | | params_flow.rb:37:34:37:42 | call to taint | type tracker without call steps with content element :p2 | params_flow.rb:37:8:37:44 | synthetic hash-splat argument | | params_flow.rb:37:34:37:42 | call to taint | type tracker without call steps with content element :p2 | params_flow.rb:38:8:38:13 | ** ... | -| params_flow.rb:37:34:37:42 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:37:34:37:42 | synthetic splat argument | type tracker without call steps | params_flow.rb:37:34:37:42 | synthetic splat argument | | params_flow.rb:37:40:37:41 | 15 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:37:40:37:41 | 15 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:37:40:37:41 | 15 | type tracker with call steps | params_flow.rb:28:11:28:21 | ...[...] | +| params_flow.rb:37:40:37:41 | 15 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:37:40:37:41 | 15 | type tracker with call steps with content element 0 | params_flow.rb:28:5:28:22 | synthetic splat argument | | params_flow.rb:37:40:37:41 | 15 | type tracker with call steps with content element :p2 | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | | params_flow.rb:37:40:37:41 | 15 | type tracker with call steps with content element :p2 | params_flow.rb:25:17:25:24 | **kwargs | -| params_flow.rb:37:40:37:41 | 15 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:37:40:37:41 | 15 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:37:40:37:41 | 15 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:37:40:37:41 | 15 | type tracker with call steps with content splat position 0 | params_flow.rb:28:5:28:22 | synthetic splat argument | | params_flow.rb:37:40:37:41 | 15 | type tracker without call steps | params_flow.rb:37:34:37:42 | call to taint | | params_flow.rb:37:40:37:41 | 15 | type tracker without call steps | params_flow.rb:37:40:37:41 | 15 | +| params_flow.rb:37:40:37:41 | 15 | type tracker without call steps with content element 0 | params_flow.rb:37:34:37:42 | synthetic splat argument | | params_flow.rb:37:40:37:41 | 15 | type tracker without call steps with content element :p2 | params_flow.rb:37:8:37:44 | call to [] | | params_flow.rb:37:40:37:41 | 15 | type tracker without call steps with content element :p2 | params_flow.rb:37:8:37:44 | synthetic hash-splat argument | | params_flow.rb:37:40:37:41 | 15 | type tracker without call steps with content element :p2 | params_flow.rb:38:8:38:13 | ** ... | -| params_flow.rb:37:40:37:41 | 15 | type tracker without call steps with content splat position 0 | params_flow.rb:37:34:37:42 | synthetic splat argument | | params_flow.rb:38:1:38:14 | call to kwargs | type tracker without call steps | params_flow.rb:38:1:38:14 | call to kwargs | | params_flow.rb:38:8:38:13 | ** ... | type tracker with call steps | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | | params_flow.rb:38:8:38:13 | ** ... | type tracker with call steps | params_flow.rb:25:17:25:24 | **kwargs | @@ -1086,205 +941,174 @@ track | params_flow.rb:40:9:40:24 | Pair | type tracker without call steps | params_flow.rb:40:9:40:24 | Pair | | params_flow.rb:40:16:40:24 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:40:16:40:24 | call to taint | type tracker with call steps | params_flow.rb:16:13:16:14 | p1 | +| params_flow.rb:40:16:40:24 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:40:16:40:24 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:17:5:17:11 | synthetic splat argument | | params_flow.rb:40:16:40:24 | call to taint | type tracker with call steps with content element :p1 | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | -| params_flow.rb:40:16:40:24 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:40:16:40:24 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:40:16:40:24 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:17:5:17:11 | synthetic splat argument | | params_flow.rb:40:16:40:24 | call to taint | type tracker without call steps | params_flow.rb:40:16:40:24 | call to taint | | params_flow.rb:40:16:40:24 | call to taint | type tracker without call steps with content element :p1 | params_flow.rb:40:8:40:26 | call to [] | | params_flow.rb:40:16:40:24 | call to taint | type tracker without call steps with content element :p1 | params_flow.rb:40:8:40:26 | synthetic hash-splat argument | | params_flow.rb:40:16:40:24 | call to taint | type tracker without call steps with content element :p1 | params_flow.rb:41:24:41:29 | ** ... | -| params_flow.rb:40:16:40:24 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:40:16:40:24 | synthetic splat argument | type tracker without call steps | params_flow.rb:40:16:40:24 | synthetic splat argument | | params_flow.rb:40:22:40:23 | 16 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:40:22:40:23 | 16 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:40:22:40:23 | 16 | type tracker with call steps | params_flow.rb:16:13:16:14 | p1 | +| params_flow.rb:40:22:40:23 | 16 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:40:22:40:23 | 16 | type tracker with call steps with content element 0 | params_flow.rb:17:5:17:11 | synthetic splat argument | | params_flow.rb:40:22:40:23 | 16 | type tracker with call steps with content element :p1 | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | -| params_flow.rb:40:22:40:23 | 16 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:40:22:40:23 | 16 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:40:22:40:23 | 16 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:40:22:40:23 | 16 | type tracker with call steps with content splat position 0 | params_flow.rb:17:5:17:11 | synthetic splat argument | | params_flow.rb:40:22:40:23 | 16 | type tracker without call steps | params_flow.rb:40:16:40:24 | call to taint | | params_flow.rb:40:22:40:23 | 16 | type tracker without call steps | params_flow.rb:40:22:40:23 | 16 | +| params_flow.rb:40:22:40:23 | 16 | type tracker without call steps with content element 0 | params_flow.rb:40:16:40:24 | synthetic splat argument | | params_flow.rb:40:22:40:23 | 16 | type tracker without call steps with content element :p1 | params_flow.rb:40:8:40:26 | call to [] | | params_flow.rb:40:22:40:23 | 16 | type tracker without call steps with content element :p1 | params_flow.rb:40:8:40:26 | synthetic hash-splat argument | | params_flow.rb:40:22:40:23 | 16 | type tracker without call steps with content element :p1 | params_flow.rb:41:24:41:29 | ** ... | -| params_flow.rb:40:22:40:23 | 16 | type tracker without call steps with content splat position 0 | params_flow.rb:40:16:40:24 | synthetic splat argument | | params_flow.rb:41:1:41:30 | call to keyword | type tracker without call steps | params_flow.rb:41:1:41:30 | call to keyword | -| params_flow.rb:41:1:41:30 | synthetic hash-splat argument | type tracker with call steps | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | | params_flow.rb:41:1:41:30 | synthetic hash-splat argument | type tracker without call steps | params_flow.rb:41:1:41:30 | synthetic hash-splat argument | | params_flow.rb:41:9:41:10 | :p2 | type tracker without call steps | params_flow.rb:41:9:41:10 | :p2 | | params_flow.rb:41:9:41:21 | Pair | type tracker without call steps | params_flow.rb:41:9:41:21 | Pair | | params_flow.rb:41:13:41:21 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:41:13:41:21 | call to taint | type tracker with call steps | params_flow.rb:16:18:16:19 | p2 | -| params_flow.rb:41:13:41:21 | call to taint | type tracker with call steps with content hash-splat position :p2 | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | -| params_flow.rb:41:13:41:21 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:41:13:41:21 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:41:13:41:21 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:18:5:18:11 | synthetic splat argument | +| params_flow.rb:41:13:41:21 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:41:13:41:21 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:18:5:18:11 | synthetic splat argument | | params_flow.rb:41:13:41:21 | call to taint | type tracker without call steps | params_flow.rb:41:13:41:21 | call to taint | -| params_flow.rb:41:13:41:21 | call to taint | type tracker without call steps with content hash-splat position :p2 | params_flow.rb:41:1:41:30 | synthetic hash-splat argument | -| params_flow.rb:41:13:41:21 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:41:13:41:21 | call to taint | type tracker without call steps with content element :p2 | params_flow.rb:41:1:41:30 | synthetic hash-splat argument | | params_flow.rb:41:13:41:21 | synthetic splat argument | type tracker without call steps | params_flow.rb:41:13:41:21 | synthetic splat argument | | params_flow.rb:41:19:41:20 | 17 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:41:19:41:20 | 17 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:41:19:41:20 | 17 | type tracker with call steps | params_flow.rb:16:18:16:19 | p2 | -| params_flow.rb:41:19:41:20 | 17 | type tracker with call steps with content hash-splat position :p2 | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | -| params_flow.rb:41:19:41:20 | 17 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:41:19:41:20 | 17 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:41:19:41:20 | 17 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:41:19:41:20 | 17 | type tracker with call steps with content splat position 0 | params_flow.rb:18:5:18:11 | synthetic splat argument | +| params_flow.rb:41:19:41:20 | 17 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:41:19:41:20 | 17 | type tracker with call steps with content element 0 | params_flow.rb:18:5:18:11 | synthetic splat argument | | params_flow.rb:41:19:41:20 | 17 | type tracker without call steps | params_flow.rb:41:13:41:21 | call to taint | | params_flow.rb:41:19:41:20 | 17 | type tracker without call steps | params_flow.rb:41:19:41:20 | 17 | -| params_flow.rb:41:19:41:20 | 17 | type tracker without call steps with content hash-splat position :p2 | params_flow.rb:41:1:41:30 | synthetic hash-splat argument | -| params_flow.rb:41:19:41:20 | 17 | type tracker without call steps with content splat position 0 | params_flow.rb:41:13:41:21 | synthetic splat argument | +| params_flow.rb:41:19:41:20 | 17 | type tracker without call steps with content element 0 | params_flow.rb:41:13:41:21 | synthetic splat argument | +| params_flow.rb:41:19:41:20 | 17 | type tracker without call steps with content element :p2 | params_flow.rb:41:1:41:30 | synthetic hash-splat argument | | params_flow.rb:41:24:41:29 | ** ... | type tracker with call steps | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | | params_flow.rb:41:24:41:29 | ** ... | type tracker without call steps | params_flow.rb:41:24:41:29 | ** ... | | params_flow.rb:43:1:43:4 | args | type tracker without call steps | params_flow.rb:43:1:43:4 | args | | params_flow.rb:43:8:43:18 | Array | type tracker without call steps | params_flow.rb:43:8:43:18 | Array | | params_flow.rb:43:8:43:18 | call to [] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:43:8:43:18 | call to [] | type tracker with call steps | params_flow.rb:9:20:9:21 | p2 | -| params_flow.rb:43:8:43:18 | call to [] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:43:8:43:18 | call to [] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:43:8:43:18 | call to [] | type tracker with call steps with content splat position 0 | params_flow.rb:11:5:11:11 | synthetic splat argument | -| params_flow.rb:43:8:43:18 | call to [] | type tracker with call steps with content splat position 1 (shifted) | params_flow.rb:9:1:12:3 | synthetic splat parameter | +| params_flow.rb:43:8:43:18 | call to [] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:43:8:43:18 | call to [] | type tracker with call steps with content element 0 | params_flow.rb:11:5:11:11 | synthetic splat argument | +| params_flow.rb:43:8:43:18 | call to [] | type tracker with call steps with content element 1 | params_flow.rb:9:1:12:3 | synthetic splat parameter | | params_flow.rb:43:8:43:18 | call to [] | type tracker without call steps | params_flow.rb:43:8:43:18 | call to [] | | params_flow.rb:43:8:43:18 | call to [] | type tracker without call steps with content element 0 or unknown | params_flow.rb:44:23:44:27 | * ... | -| params_flow.rb:43:8:43:18 | call to [] | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:44:1:44:28 | synthetic splat argument | +| params_flow.rb:43:8:43:18 | call to [] | type tracker without call steps with content element 1 | params_flow.rb:44:1:44:28 | synthetic splat argument | | params_flow.rb:43:8:43:18 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:43:8:43:18 | synthetic splat argument | type tracker with call steps | params_flow.rb:9:20:9:21 | p2 | -| params_flow.rb:43:8:43:18 | synthetic splat argument | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:43:8:43:18 | synthetic splat argument | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:43:8:43:18 | synthetic splat argument | type tracker with call steps with content splat position 0 | params_flow.rb:11:5:11:11 | synthetic splat argument | -| params_flow.rb:43:8:43:18 | synthetic splat argument | type tracker with call steps with content splat position 1 (shifted) | params_flow.rb:9:1:12:3 | synthetic splat parameter | +| params_flow.rb:43:8:43:18 | synthetic splat argument | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:43:8:43:18 | synthetic splat argument | type tracker with call steps with content element 0 | params_flow.rb:11:5:11:11 | synthetic splat argument | +| params_flow.rb:43:8:43:18 | synthetic splat argument | type tracker with call steps with content element 1 | params_flow.rb:9:1:12:3 | synthetic splat parameter | | params_flow.rb:43:8:43:18 | synthetic splat argument | type tracker without call steps | params_flow.rb:43:8:43:18 | call to [] | | params_flow.rb:43:8:43:18 | synthetic splat argument | type tracker without call steps | params_flow.rb:43:8:43:18 | synthetic splat argument | | params_flow.rb:43:8:43:18 | synthetic splat argument | type tracker without call steps with content element 0 or unknown | params_flow.rb:44:23:44:27 | * ... | -| params_flow.rb:43:8:43:18 | synthetic splat argument | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:44:1:44:28 | synthetic splat argument | +| params_flow.rb:43:8:43:18 | synthetic splat argument | type tracker without call steps with content element 1 | params_flow.rb:44:1:44:28 | synthetic splat argument | | params_flow.rb:43:9:43:17 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:43:9:43:17 | call to taint | type tracker with call steps | params_flow.rb:9:20:9:21 | p2 | -| params_flow.rb:43:9:43:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:43:9:43:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:43:9:43:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:11:5:11:11 | synthetic splat argument | -| params_flow.rb:43:9:43:17 | call to taint | type tracker with call steps with content splat position 1 (shifted) | params_flow.rb:9:1:12:3 | synthetic splat parameter | +| params_flow.rb:43:9:43:17 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:43:9:43:17 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:11:5:11:11 | synthetic splat argument | +| params_flow.rb:43:9:43:17 | call to taint | type tracker with call steps with content element 1 | params_flow.rb:9:1:12:3 | synthetic splat parameter | | params_flow.rb:43:9:43:17 | call to taint | type tracker without call steps | params_flow.rb:43:9:43:17 | call to taint | | params_flow.rb:43:9:43:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:43:8:43:18 | call to [] | | params_flow.rb:43:9:43:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:43:8:43:18 | synthetic splat argument | | params_flow.rb:43:9:43:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:44:23:44:27 | * ... | -| params_flow.rb:43:9:43:17 | call to taint | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:44:1:44:28 | synthetic splat argument | -| params_flow.rb:43:9:43:17 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:43:9:43:17 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:44:1:44:28 | synthetic splat argument | | params_flow.rb:43:9:43:17 | synthetic splat argument | type tracker without call steps | params_flow.rb:43:9:43:17 | synthetic splat argument | | params_flow.rb:43:15:43:16 | 17 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:43:15:43:16 | 17 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:43:15:43:16 | 17 | type tracker with call steps | params_flow.rb:9:20:9:21 | p2 | -| params_flow.rb:43:15:43:16 | 17 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:43:15:43:16 | 17 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:43:15:43:16 | 17 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:43:15:43:16 | 17 | type tracker with call steps with content splat position 0 | params_flow.rb:11:5:11:11 | synthetic splat argument | -| params_flow.rb:43:15:43:16 | 17 | type tracker with call steps with content splat position 1 (shifted) | params_flow.rb:9:1:12:3 | synthetic splat parameter | +| params_flow.rb:43:15:43:16 | 17 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:43:15:43:16 | 17 | type tracker with call steps with content element 0 | params_flow.rb:11:5:11:11 | synthetic splat argument | +| params_flow.rb:43:15:43:16 | 17 | type tracker with call steps with content element 1 | params_flow.rb:9:1:12:3 | synthetic splat parameter | | params_flow.rb:43:15:43:16 | 17 | type tracker without call steps | params_flow.rb:43:9:43:17 | call to taint | | params_flow.rb:43:15:43:16 | 17 | type tracker without call steps | params_flow.rb:43:15:43:16 | 17 | | params_flow.rb:43:15:43:16 | 17 | type tracker without call steps with content element 0 | params_flow.rb:43:8:43:18 | call to [] | | params_flow.rb:43:15:43:16 | 17 | type tracker without call steps with content element 0 | params_flow.rb:43:8:43:18 | synthetic splat argument | +| params_flow.rb:43:15:43:16 | 17 | type tracker without call steps with content element 0 | params_flow.rb:43:9:43:17 | synthetic splat argument | | params_flow.rb:43:15:43:16 | 17 | type tracker without call steps with content element 0 | params_flow.rb:44:23:44:27 | * ... | -| params_flow.rb:43:15:43:16 | 17 | type tracker without call steps with content splat position 0 | params_flow.rb:43:9:43:17 | synthetic splat argument | -| params_flow.rb:43:15:43:16 | 17 | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:44:1:44:28 | synthetic splat argument | +| params_flow.rb:43:15:43:16 | 17 | type tracker without call steps with content element 1 | params_flow.rb:44:1:44:28 | synthetic splat argument | | params_flow.rb:44:1:44:28 | call to positional | type tracker without call steps | params_flow.rb:44:1:44:28 | call to positional | | params_flow.rb:44:1:44:28 | synthetic splat argument | type tracker with call steps | params_flow.rb:9:1:12:3 | synthetic splat parameter | | params_flow.rb:44:1:44:28 | synthetic splat argument | type tracker without call steps | params_flow.rb:44:1:44:28 | synthetic splat argument | | params_flow.rb:44:12:44:20 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:44:12:44:20 | call to taint | type tracker with call steps | params_flow.rb:9:16:9:17 | p1 | -| params_flow.rb:44:12:44:20 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:44:12:44:20 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:44:12:44:20 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:9:1:12:3 | synthetic splat parameter | -| params_flow.rb:44:12:44:20 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | +| params_flow.rb:44:12:44:20 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:44:12:44:20 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:9:1:12:3 | synthetic splat parameter | +| params_flow.rb:44:12:44:20 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | | params_flow.rb:44:12:44:20 | call to taint | type tracker without call steps | params_flow.rb:44:12:44:20 | call to taint | -| params_flow.rb:44:12:44:20 | call to taint | type tracker without call steps with content splat position 0 | params_flow.rb:44:1:44:28 | synthetic splat argument | -| params_flow.rb:44:12:44:20 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:44:12:44:20 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:44:1:44:28 | synthetic splat argument | | params_flow.rb:44:12:44:20 | synthetic splat argument | type tracker without call steps | params_flow.rb:44:12:44:20 | synthetic splat argument | | params_flow.rb:44:18:44:19 | 16 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:44:18:44:19 | 16 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:44:18:44:19 | 16 | type tracker with call steps | params_flow.rb:9:16:9:17 | p1 | -| params_flow.rb:44:18:44:19 | 16 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:44:18:44:19 | 16 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:44:18:44:19 | 16 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:44:18:44:19 | 16 | type tracker with call steps with content splat position 0 | params_flow.rb:9:1:12:3 | synthetic splat parameter | -| params_flow.rb:44:18:44:19 | 16 | type tracker with call steps with content splat position 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | +| params_flow.rb:44:18:44:19 | 16 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:44:18:44:19 | 16 | type tracker with call steps with content element 0 | params_flow.rb:9:1:12:3 | synthetic splat parameter | +| params_flow.rb:44:18:44:19 | 16 | type tracker with call steps with content element 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | | params_flow.rb:44:18:44:19 | 16 | type tracker without call steps | params_flow.rb:44:12:44:20 | call to taint | | params_flow.rb:44:18:44:19 | 16 | type tracker without call steps | params_flow.rb:44:18:44:19 | 16 | -| params_flow.rb:44:18:44:19 | 16 | type tracker without call steps with content splat position 0 | params_flow.rb:44:1:44:28 | synthetic splat argument | -| params_flow.rb:44:18:44:19 | 16 | type tracker without call steps with content splat position 0 | params_flow.rb:44:12:44:20 | synthetic splat argument | +| params_flow.rb:44:18:44:19 | 16 | type tracker without call steps with content element 0 | params_flow.rb:44:1:44:28 | synthetic splat argument | +| params_flow.rb:44:18:44:19 | 16 | type tracker without call steps with content element 0 | params_flow.rb:44:12:44:20 | synthetic splat argument | | params_flow.rb:44:23:44:27 | * ... | type tracker without call steps | params_flow.rb:44:23:44:27 | * ... | | params_flow.rb:46:1:46:4 | args | type tracker without call steps | params_flow.rb:46:1:46:4 | args | | params_flow.rb:46:8:46:29 | Array | type tracker without call steps | params_flow.rb:46:8:46:29 | Array | | params_flow.rb:46:8:46:29 | call to [] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:46:8:46:29 | call to [] | type tracker with call steps | params_flow.rb:9:16:9:17 | p1 | +| params_flow.rb:46:8:46:29 | call to [] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:46:8:46:29 | call to [] | type tracker with call steps with content element 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | | params_flow.rb:46:8:46:29 | call to [] | type tracker with call steps with content element 0 or unknown | params_flow.rb:9:1:12:3 | synthetic splat parameter | -| params_flow.rb:46:8:46:29 | call to [] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:46:8:46:29 | call to [] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:46:8:46:29 | call to [] | type tracker with call steps with content splat position 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | | params_flow.rb:46:8:46:29 | call to [] | type tracker without call steps | params_flow.rb:46:8:46:29 | call to [] | | params_flow.rb:46:8:46:29 | call to [] | type tracker without call steps with content element 0 or unknown | params_flow.rb:47:12:47:16 | * ... | | params_flow.rb:46:8:46:29 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:46:8:46:29 | synthetic splat argument | type tracker with call steps | params_flow.rb:9:16:9:17 | p1 | +| params_flow.rb:46:8:46:29 | synthetic splat argument | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:46:8:46:29 | synthetic splat argument | type tracker with call steps with content element 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | | params_flow.rb:46:8:46:29 | synthetic splat argument | type tracker with call steps with content element 0 or unknown | params_flow.rb:9:1:12:3 | synthetic splat parameter | -| params_flow.rb:46:8:46:29 | synthetic splat argument | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:46:8:46:29 | synthetic splat argument | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:46:8:46:29 | synthetic splat argument | type tracker with call steps with content splat position 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | | params_flow.rb:46:8:46:29 | synthetic splat argument | type tracker without call steps | params_flow.rb:46:8:46:29 | call to [] | | params_flow.rb:46:8:46:29 | synthetic splat argument | type tracker without call steps | params_flow.rb:46:8:46:29 | synthetic splat argument | | params_flow.rb:46:8:46:29 | synthetic splat argument | type tracker without call steps with content element 0 or unknown | params_flow.rb:47:12:47:16 | * ... | | params_flow.rb:46:9:46:17 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:46:9:46:17 | call to taint | type tracker with call steps | params_flow.rb:9:16:9:17 | p1 | +| params_flow.rb:46:9:46:17 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:46:9:46:17 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:9:1:12:3 | synthetic splat parameter | -| params_flow.rb:46:9:46:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:46:9:46:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:46:9:46:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | +| params_flow.rb:46:9:46:17 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | | params_flow.rb:46:9:46:17 | call to taint | type tracker without call steps | params_flow.rb:46:9:46:17 | call to taint | | params_flow.rb:46:9:46:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:46:8:46:29 | call to [] | | params_flow.rb:46:9:46:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:46:8:46:29 | synthetic splat argument | | params_flow.rb:46:9:46:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:47:12:47:16 | * ... | -| params_flow.rb:46:9:46:17 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:46:9:46:17 | synthetic splat argument | type tracker without call steps | params_flow.rb:46:9:46:17 | synthetic splat argument | | params_flow.rb:46:15:46:16 | 18 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:46:15:46:16 | 18 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:46:15:46:16 | 18 | type tracker with call steps | params_flow.rb:9:16:9:17 | p1 | +| params_flow.rb:46:15:46:16 | 18 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:46:15:46:16 | 18 | type tracker with call steps with content element 0 | params_flow.rb:9:1:12:3 | synthetic splat parameter | -| params_flow.rb:46:15:46:16 | 18 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:46:15:46:16 | 18 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:46:15:46:16 | 18 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:46:15:46:16 | 18 | type tracker with call steps with content splat position 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | +| params_flow.rb:46:15:46:16 | 18 | type tracker with call steps with content element 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | | params_flow.rb:46:15:46:16 | 18 | type tracker without call steps | params_flow.rb:46:9:46:17 | call to taint | | params_flow.rb:46:15:46:16 | 18 | type tracker without call steps | params_flow.rb:46:15:46:16 | 18 | | params_flow.rb:46:15:46:16 | 18 | type tracker without call steps with content element 0 | params_flow.rb:46:8:46:29 | call to [] | | params_flow.rb:46:15:46:16 | 18 | type tracker without call steps with content element 0 | params_flow.rb:46:8:46:29 | synthetic splat argument | +| params_flow.rb:46:15:46:16 | 18 | type tracker without call steps with content element 0 | params_flow.rb:46:9:46:17 | synthetic splat argument | | params_flow.rb:46:15:46:16 | 18 | type tracker without call steps with content element 0 | params_flow.rb:47:12:47:16 | * ... | -| params_flow.rb:46:15:46:16 | 18 | type tracker without call steps with content splat position 0 | params_flow.rb:46:9:46:17 | synthetic splat argument | | params_flow.rb:46:20:46:28 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:46:20:46:28 | call to taint | type tracker with call steps | params_flow.rb:9:20:9:21 | p2 | +| params_flow.rb:46:20:46:28 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:46:20:46:28 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:11:5:11:11 | synthetic splat argument | | params_flow.rb:46:20:46:28 | call to taint | type tracker with call steps with content element 1 | params_flow.rb:9:1:12:3 | synthetic splat parameter | -| params_flow.rb:46:20:46:28 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:46:20:46:28 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:46:20:46:28 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:11:5:11:11 | synthetic splat argument | | params_flow.rb:46:20:46:28 | call to taint | type tracker without call steps | params_flow.rb:46:20:46:28 | call to taint | | params_flow.rb:46:20:46:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:46:8:46:29 | call to [] | | params_flow.rb:46:20:46:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:46:8:46:29 | synthetic splat argument | | params_flow.rb:46:20:46:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:47:12:47:16 | * ... | -| params_flow.rb:46:20:46:28 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:46:20:46:28 | synthetic splat argument | type tracker without call steps | params_flow.rb:46:20:46:28 | synthetic splat argument | | params_flow.rb:46:26:46:27 | 19 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:46:26:46:27 | 19 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:46:26:46:27 | 19 | type tracker with call steps | params_flow.rb:9:20:9:21 | p2 | +| params_flow.rb:46:26:46:27 | 19 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:46:26:46:27 | 19 | type tracker with call steps with content element 0 | params_flow.rb:11:5:11:11 | synthetic splat argument | | params_flow.rb:46:26:46:27 | 19 | type tracker with call steps with content element 1 | params_flow.rb:9:1:12:3 | synthetic splat parameter | -| params_flow.rb:46:26:46:27 | 19 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:46:26:46:27 | 19 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:46:26:46:27 | 19 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:46:26:46:27 | 19 | type tracker with call steps with content splat position 0 | params_flow.rb:11:5:11:11 | synthetic splat argument | | params_flow.rb:46:26:46:27 | 19 | type tracker without call steps | params_flow.rb:46:20:46:28 | call to taint | | params_flow.rb:46:26:46:27 | 19 | type tracker without call steps | params_flow.rb:46:26:46:27 | 19 | +| params_flow.rb:46:26:46:27 | 19 | type tracker without call steps with content element 0 | params_flow.rb:46:20:46:28 | synthetic splat argument | | params_flow.rb:46:26:46:27 | 19 | type tracker without call steps with content element 1 | params_flow.rb:46:8:46:29 | call to [] | | params_flow.rb:46:26:46:27 | 19 | type tracker without call steps with content element 1 | params_flow.rb:46:8:46:29 | synthetic splat argument | | params_flow.rb:46:26:46:27 | 19 | type tracker without call steps with content element 1 | params_flow.rb:47:12:47:16 | * ... | -| params_flow.rb:46:26:46:27 | 19 | type tracker without call steps with content splat position 0 | params_flow.rb:46:20:46:28 | synthetic splat argument | | params_flow.rb:47:1:47:17 | call to positional | type tracker without call steps | params_flow.rb:47:1:47:17 | call to positional | | params_flow.rb:47:12:47:16 | * ... | type tracker with call steps | params_flow.rb:9:1:12:3 | synthetic splat parameter | | params_flow.rb:47:12:47:16 | * ... | type tracker without call steps | params_flow.rb:47:12:47:16 | * ... | @@ -1294,271 +1118,224 @@ track | params_flow.rb:49:1:53:3 | self in posargs | type tracker without call steps | params_flow.rb:49:1:53:3 | self in posargs | | params_flow.rb:49:1:53:3 | synthetic splat parameter | type tracker without call steps | params_flow.rb:49:1:53:3 | synthetic splat parameter | | params_flow.rb:49:13:49:14 | p1 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:49:13:49:14 | p1 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:49:13:49:14 | p1 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:49:13:49:14 | p1 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:49:13:49:14 | p1 | type tracker without call steps | params_flow.rb:49:13:49:14 | p1 | | params_flow.rb:49:13:49:14 | p1 | type tracker without call steps | params_flow.rb:49:13:49:14 | p1 | -| params_flow.rb:49:13:49:14 | p1 | type tracker without call steps with content splat position 0 | params_flow.rb:50:5:50:11 | synthetic splat argument | +| params_flow.rb:49:13:49:14 | p1 | type tracker without call steps with content element 0 | params_flow.rb:50:5:50:11 | synthetic splat argument | | params_flow.rb:49:17:49:24 | *posargs | type tracker without call steps | params_flow.rb:49:17:49:24 | *posargs | | params_flow.rb:49:18:49:24 | posargs | type tracker without call steps | params_flow.rb:49:18:49:24 | posargs | | params_flow.rb:50:5:50:11 | call to sink | type tracker without call steps | params_flow.rb:50:5:50:11 | call to sink | -| params_flow.rb:50:5:50:11 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:50:5:50:11 | synthetic splat argument | type tracker without call steps | params_flow.rb:50:5:50:11 | synthetic splat argument | | params_flow.rb:51:5:51:21 | call to sink | type tracker without call steps | params_flow.rb:51:5:51:21 | call to sink | -| params_flow.rb:51:5:51:21 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:51:5:51:21 | synthetic splat argument | type tracker without call steps | params_flow.rb:51:5:51:21 | synthetic splat argument | | params_flow.rb:51:11:51:20 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:51:11:51:20 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:51:11:51:20 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:51:11:51:20 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:51:11:51:20 | ...[...] | type tracker without call steps | params_flow.rb:51:11:51:20 | ...[...] | -| params_flow.rb:51:11:51:20 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:51:5:51:21 | synthetic splat argument | +| params_flow.rb:51:11:51:20 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:51:5:51:21 | synthetic splat argument | | params_flow.rb:51:11:51:20 | synthetic splat argument | type tracker without call steps | params_flow.rb:51:11:51:20 | synthetic splat argument | | params_flow.rb:51:19:51:19 | 0 | type tracker without call steps | params_flow.rb:51:19:51:19 | 0 | -| params_flow.rb:51:19:51:19 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:51:11:51:20 | synthetic splat argument | +| params_flow.rb:51:19:51:19 | 0 | type tracker without call steps with content element 0 | params_flow.rb:51:11:51:20 | synthetic splat argument | | params_flow.rb:52:5:52:21 | call to sink | type tracker without call steps | params_flow.rb:52:5:52:21 | call to sink | | params_flow.rb:52:5:52:21 | call to sink | type tracker without call steps | params_flow.rb:55:1:55:29 | call to posargs | | params_flow.rb:52:5:52:21 | call to sink | type tracker without call steps | params_flow.rb:58:1:58:25 | call to posargs | | params_flow.rb:52:5:52:21 | call to sink | type tracker without call steps | params_flow.rb:61:1:61:14 | call to posargs | -| params_flow.rb:52:5:52:21 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:52:5:52:21 | synthetic splat argument | type tracker without call steps | params_flow.rb:52:5:52:21 | synthetic splat argument | | params_flow.rb:52:11:52:20 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:52:11:52:20 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:52:11:52:20 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:52:11:52:20 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:52:11:52:20 | ...[...] | type tracker without call steps | params_flow.rb:52:11:52:20 | ...[...] | -| params_flow.rb:52:11:52:20 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:52:5:52:21 | synthetic splat argument | +| params_flow.rb:52:11:52:20 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:52:5:52:21 | synthetic splat argument | | params_flow.rb:52:11:52:20 | synthetic splat argument | type tracker without call steps | params_flow.rb:52:11:52:20 | synthetic splat argument | | params_flow.rb:52:19:52:19 | 1 | type tracker without call steps | params_flow.rb:52:19:52:19 | 1 | -| params_flow.rb:52:19:52:19 | 1 | type tracker without call steps with content splat position 0 | params_flow.rb:52:11:52:20 | synthetic splat argument | +| params_flow.rb:52:19:52:19 | 1 | type tracker without call steps with content element 0 | params_flow.rb:52:11:52:20 | synthetic splat argument | | params_flow.rb:55:1:55:29 | call to posargs | type tracker without call steps | params_flow.rb:55:1:55:29 | call to posargs | | params_flow.rb:55:1:55:29 | synthetic splat argument | type tracker with call steps | params_flow.rb:49:1:53:3 | synthetic splat parameter | | params_flow.rb:55:1:55:29 | synthetic splat argument | type tracker without call steps | params_flow.rb:55:1:55:29 | synthetic splat argument | | params_flow.rb:55:9:55:17 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:55:9:55:17 | call to taint | type tracker with call steps | params_flow.rb:49:13:49:14 | p1 | -| params_flow.rb:55:9:55:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:55:9:55:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:55:9:55:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:49:1:53:3 | synthetic splat parameter | -| params_flow.rb:55:9:55:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:50:5:50:11 | synthetic splat argument | +| params_flow.rb:55:9:55:17 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:55:9:55:17 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:49:1:53:3 | synthetic splat parameter | +| params_flow.rb:55:9:55:17 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:50:5:50:11 | synthetic splat argument | | params_flow.rb:55:9:55:17 | call to taint | type tracker without call steps | params_flow.rb:55:9:55:17 | call to taint | -| params_flow.rb:55:9:55:17 | call to taint | type tracker without call steps with content splat position 0 | params_flow.rb:55:1:55:29 | synthetic splat argument | -| params_flow.rb:55:9:55:17 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:55:9:55:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:55:1:55:29 | synthetic splat argument | | params_flow.rb:55:9:55:17 | synthetic splat argument | type tracker without call steps | params_flow.rb:55:9:55:17 | synthetic splat argument | | params_flow.rb:55:15:55:16 | 20 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:55:15:55:16 | 20 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:55:15:55:16 | 20 | type tracker with call steps | params_flow.rb:49:13:49:14 | p1 | -| params_flow.rb:55:15:55:16 | 20 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:55:15:55:16 | 20 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:55:15:55:16 | 20 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:55:15:55:16 | 20 | type tracker with call steps with content splat position 0 | params_flow.rb:49:1:53:3 | synthetic splat parameter | -| params_flow.rb:55:15:55:16 | 20 | type tracker with call steps with content splat position 0 | params_flow.rb:50:5:50:11 | synthetic splat argument | +| params_flow.rb:55:15:55:16 | 20 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:55:15:55:16 | 20 | type tracker with call steps with content element 0 | params_flow.rb:49:1:53:3 | synthetic splat parameter | +| params_flow.rb:55:15:55:16 | 20 | type tracker with call steps with content element 0 | params_flow.rb:50:5:50:11 | synthetic splat argument | | params_flow.rb:55:15:55:16 | 20 | type tracker without call steps | params_flow.rb:55:9:55:17 | call to taint | | params_flow.rb:55:15:55:16 | 20 | type tracker without call steps | params_flow.rb:55:15:55:16 | 20 | -| params_flow.rb:55:15:55:16 | 20 | type tracker without call steps with content splat position 0 | params_flow.rb:55:1:55:29 | synthetic splat argument | -| params_flow.rb:55:15:55:16 | 20 | type tracker without call steps with content splat position 0 | params_flow.rb:55:9:55:17 | synthetic splat argument | +| params_flow.rb:55:15:55:16 | 20 | type tracker without call steps with content element 0 | params_flow.rb:55:1:55:29 | synthetic splat argument | +| params_flow.rb:55:15:55:16 | 20 | type tracker without call steps with content element 0 | params_flow.rb:55:9:55:17 | synthetic splat argument | | params_flow.rb:55:20:55:28 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:55:20:55:28 | call to taint | type tracker with call steps | params_flow.rb:51:11:51:20 | ...[...] | +| params_flow.rb:55:20:55:28 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:55:20:55:28 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:49:17:49:24 | *posargs | -| params_flow.rb:55:20:55:28 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:55:20:55:28 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:55:20:55:28 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:51:5:51:21 | synthetic splat argument | -| params_flow.rb:55:20:55:28 | call to taint | type tracker with call steps with content splat position 1 | params_flow.rb:49:1:53:3 | synthetic splat parameter | +| params_flow.rb:55:20:55:28 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:51:5:51:21 | synthetic splat argument | +| params_flow.rb:55:20:55:28 | call to taint | type tracker with call steps with content element 1 | params_flow.rb:49:1:53:3 | synthetic splat parameter | | params_flow.rb:55:20:55:28 | call to taint | type tracker without call steps | params_flow.rb:55:20:55:28 | call to taint | -| params_flow.rb:55:20:55:28 | call to taint | type tracker without call steps with content splat position 1 | params_flow.rb:55:1:55:29 | synthetic splat argument | -| params_flow.rb:55:20:55:28 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:55:20:55:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:55:1:55:29 | synthetic splat argument | | params_flow.rb:55:20:55:28 | synthetic splat argument | type tracker without call steps | params_flow.rb:55:20:55:28 | synthetic splat argument | | params_flow.rb:55:26:55:27 | 21 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:55:26:55:27 | 21 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:55:26:55:27 | 21 | type tracker with call steps | params_flow.rb:51:11:51:20 | ...[...] | +| params_flow.rb:55:26:55:27 | 21 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:55:26:55:27 | 21 | type tracker with call steps with content element 0 | params_flow.rb:49:17:49:24 | *posargs | -| params_flow.rb:55:26:55:27 | 21 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:55:26:55:27 | 21 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:55:26:55:27 | 21 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:55:26:55:27 | 21 | type tracker with call steps with content splat position 0 | params_flow.rb:51:5:51:21 | synthetic splat argument | -| params_flow.rb:55:26:55:27 | 21 | type tracker with call steps with content splat position 1 | params_flow.rb:49:1:53:3 | synthetic splat parameter | +| params_flow.rb:55:26:55:27 | 21 | type tracker with call steps with content element 0 | params_flow.rb:51:5:51:21 | synthetic splat argument | +| params_flow.rb:55:26:55:27 | 21 | type tracker with call steps with content element 1 | params_flow.rb:49:1:53:3 | synthetic splat parameter | | params_flow.rb:55:26:55:27 | 21 | type tracker without call steps | params_flow.rb:55:20:55:28 | call to taint | | params_flow.rb:55:26:55:27 | 21 | type tracker without call steps | params_flow.rb:55:26:55:27 | 21 | -| params_flow.rb:55:26:55:27 | 21 | type tracker without call steps with content splat position 0 | params_flow.rb:55:20:55:28 | synthetic splat argument | -| params_flow.rb:55:26:55:27 | 21 | type tracker without call steps with content splat position 1 | params_flow.rb:55:1:55:29 | synthetic splat argument | +| params_flow.rb:55:26:55:27 | 21 | type tracker without call steps with content element 0 | params_flow.rb:55:20:55:28 | synthetic splat argument | +| params_flow.rb:55:26:55:27 | 21 | type tracker without call steps with content element 1 | params_flow.rb:55:1:55:29 | synthetic splat argument | | params_flow.rb:57:1:57:4 | args | type tracker without call steps | params_flow.rb:57:1:57:4 | args | | params_flow.rb:57:8:57:18 | Array | type tracker without call steps | params_flow.rb:57:8:57:18 | Array | | params_flow.rb:57:8:57:18 | call to [] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:57:8:57:18 | call to [] | type tracker with call steps | params_flow.rb:51:11:51:20 | ...[...] | -| params_flow.rb:57:8:57:18 | call to [] | type tracker with call steps with content element 0 | params_flow.rb:49:17:49:24 | *posargs | +| params_flow.rb:57:8:57:18 | call to [] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:57:8:57:18 | call to [] | type tracker with call steps with content element 0 | params_flow.rb:51:5:51:21 | synthetic splat argument | | params_flow.rb:57:8:57:18 | call to [] | type tracker with call steps with content element 0 or unknown | params_flow.rb:49:17:49:24 | *posargs | -| params_flow.rb:57:8:57:18 | call to [] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:57:8:57:18 | call to [] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:57:8:57:18 | call to [] | type tracker with call steps with content splat position 0 | params_flow.rb:51:5:51:21 | synthetic splat argument | -| params_flow.rb:57:8:57:18 | call to [] | type tracker with call steps with content splat position 1 (shifted) | params_flow.rb:49:1:53:3 | synthetic splat parameter | | params_flow.rb:57:8:57:18 | call to [] | type tracker without call steps | params_flow.rb:57:8:57:18 | call to [] | | params_flow.rb:57:8:57:18 | call to [] | type tracker without call steps with content element 0 or unknown | params_flow.rb:58:20:58:24 | * ... | -| params_flow.rb:57:8:57:18 | call to [] | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:58:1:58:25 | synthetic splat argument | +| params_flow.rb:57:8:57:18 | call to [] | type tracker without call steps with content element 1 | params_flow.rb:58:1:58:25 | synthetic splat argument | | params_flow.rb:57:8:57:18 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:57:8:57:18 | synthetic splat argument | type tracker with call steps | params_flow.rb:51:11:51:20 | ...[...] | -| params_flow.rb:57:8:57:18 | synthetic splat argument | type tracker with call steps with content element 0 | params_flow.rb:49:17:49:24 | *posargs | +| params_flow.rb:57:8:57:18 | synthetic splat argument | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:57:8:57:18 | synthetic splat argument | type tracker with call steps with content element 0 | params_flow.rb:51:5:51:21 | synthetic splat argument | | params_flow.rb:57:8:57:18 | synthetic splat argument | type tracker with call steps with content element 0 or unknown | params_flow.rb:49:17:49:24 | *posargs | -| params_flow.rb:57:8:57:18 | synthetic splat argument | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:57:8:57:18 | synthetic splat argument | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:57:8:57:18 | synthetic splat argument | type tracker with call steps with content splat position 0 | params_flow.rb:51:5:51:21 | synthetic splat argument | -| params_flow.rb:57:8:57:18 | synthetic splat argument | type tracker with call steps with content splat position 1 (shifted) | params_flow.rb:49:1:53:3 | synthetic splat parameter | | params_flow.rb:57:8:57:18 | synthetic splat argument | type tracker without call steps | params_flow.rb:57:8:57:18 | call to [] | | params_flow.rb:57:8:57:18 | synthetic splat argument | type tracker without call steps | params_flow.rb:57:8:57:18 | synthetic splat argument | | params_flow.rb:57:8:57:18 | synthetic splat argument | type tracker without call steps with content element 0 or unknown | params_flow.rb:58:20:58:24 | * ... | -| params_flow.rb:57:8:57:18 | synthetic splat argument | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:58:1:58:25 | synthetic splat argument | +| params_flow.rb:57:8:57:18 | synthetic splat argument | type tracker without call steps with content element 1 | params_flow.rb:58:1:58:25 | synthetic splat argument | | params_flow.rb:57:9:57:17 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:57:9:57:17 | call to taint | type tracker with call steps | params_flow.rb:51:11:51:20 | ...[...] | +| params_flow.rb:57:9:57:17 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:57:9:57:17 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:49:17:49:24 | *posargs | -| params_flow.rb:57:9:57:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:57:9:57:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:57:9:57:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:51:5:51:21 | synthetic splat argument | -| params_flow.rb:57:9:57:17 | call to taint | type tracker with call steps with content splat position 1 (shifted) | params_flow.rb:49:1:53:3 | synthetic splat parameter | +| params_flow.rb:57:9:57:17 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:51:5:51:21 | synthetic splat argument | | params_flow.rb:57:9:57:17 | call to taint | type tracker without call steps | params_flow.rb:57:9:57:17 | call to taint | | params_flow.rb:57:9:57:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:57:8:57:18 | call to [] | | params_flow.rb:57:9:57:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:57:8:57:18 | synthetic splat argument | | params_flow.rb:57:9:57:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:58:20:58:24 | * ... | -| params_flow.rb:57:9:57:17 | call to taint | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:58:1:58:25 | synthetic splat argument | -| params_flow.rb:57:9:57:17 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:57:9:57:17 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:58:1:58:25 | synthetic splat argument | | params_flow.rb:57:9:57:17 | synthetic splat argument | type tracker without call steps | params_flow.rb:57:9:57:17 | synthetic splat argument | | params_flow.rb:57:15:57:16 | 22 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:57:15:57:16 | 22 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:57:15:57:16 | 22 | type tracker with call steps | params_flow.rb:51:11:51:20 | ...[...] | +| params_flow.rb:57:15:57:16 | 22 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:57:15:57:16 | 22 | type tracker with call steps with content element 0 | params_flow.rb:49:17:49:24 | *posargs | -| params_flow.rb:57:15:57:16 | 22 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:57:15:57:16 | 22 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:57:15:57:16 | 22 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:57:15:57:16 | 22 | type tracker with call steps with content splat position 0 | params_flow.rb:51:5:51:21 | synthetic splat argument | -| params_flow.rb:57:15:57:16 | 22 | type tracker with call steps with content splat position 1 (shifted) | params_flow.rb:49:1:53:3 | synthetic splat parameter | +| params_flow.rb:57:15:57:16 | 22 | type tracker with call steps with content element 0 | params_flow.rb:51:5:51:21 | synthetic splat argument | | params_flow.rb:57:15:57:16 | 22 | type tracker without call steps | params_flow.rb:57:9:57:17 | call to taint | | params_flow.rb:57:15:57:16 | 22 | type tracker without call steps | params_flow.rb:57:15:57:16 | 22 | | params_flow.rb:57:15:57:16 | 22 | type tracker without call steps with content element 0 | params_flow.rb:57:8:57:18 | call to [] | | params_flow.rb:57:15:57:16 | 22 | type tracker without call steps with content element 0 | params_flow.rb:57:8:57:18 | synthetic splat argument | +| params_flow.rb:57:15:57:16 | 22 | type tracker without call steps with content element 0 | params_flow.rb:57:9:57:17 | synthetic splat argument | | params_flow.rb:57:15:57:16 | 22 | type tracker without call steps with content element 0 | params_flow.rb:58:20:58:24 | * ... | -| params_flow.rb:57:15:57:16 | 22 | type tracker without call steps with content splat position 0 | params_flow.rb:57:9:57:17 | synthetic splat argument | -| params_flow.rb:57:15:57:16 | 22 | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:58:1:58:25 | synthetic splat argument | +| params_flow.rb:57:15:57:16 | 22 | type tracker without call steps with content element 1 | params_flow.rb:58:1:58:25 | synthetic splat argument | | params_flow.rb:58:1:58:25 | call to posargs | type tracker without call steps | params_flow.rb:58:1:58:25 | call to posargs | -| params_flow.rb:58:1:58:25 | synthetic splat argument | type tracker with call steps | params_flow.rb:49:1:53:3 | synthetic splat parameter | | params_flow.rb:58:1:58:25 | synthetic splat argument | type tracker without call steps | params_flow.rb:58:1:58:25 | synthetic splat argument | | params_flow.rb:58:9:58:17 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:58:9:58:17 | call to taint | type tracker with call steps | params_flow.rb:49:13:49:14 | p1 | -| params_flow.rb:58:9:58:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:58:9:58:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:58:9:58:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:49:1:53:3 | synthetic splat parameter | -| params_flow.rb:58:9:58:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:50:5:50:11 | synthetic splat argument | +| params_flow.rb:58:9:58:17 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:58:9:58:17 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:50:5:50:11 | synthetic splat argument | | params_flow.rb:58:9:58:17 | call to taint | type tracker without call steps | params_flow.rb:58:9:58:17 | call to taint | -| params_flow.rb:58:9:58:17 | call to taint | type tracker without call steps with content splat position 0 | params_flow.rb:58:1:58:25 | synthetic splat argument | -| params_flow.rb:58:9:58:17 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:58:9:58:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:58:1:58:25 | synthetic splat argument | | params_flow.rb:58:9:58:17 | synthetic splat argument | type tracker without call steps | params_flow.rb:58:9:58:17 | synthetic splat argument | | params_flow.rb:58:15:58:16 | 23 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:58:15:58:16 | 23 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:58:15:58:16 | 23 | type tracker with call steps | params_flow.rb:49:13:49:14 | p1 | -| params_flow.rb:58:15:58:16 | 23 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:58:15:58:16 | 23 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:58:15:58:16 | 23 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:58:15:58:16 | 23 | type tracker with call steps with content splat position 0 | params_flow.rb:49:1:53:3 | synthetic splat parameter | -| params_flow.rb:58:15:58:16 | 23 | type tracker with call steps with content splat position 0 | params_flow.rb:50:5:50:11 | synthetic splat argument | +| params_flow.rb:58:15:58:16 | 23 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:58:15:58:16 | 23 | type tracker with call steps with content element 0 | params_flow.rb:50:5:50:11 | synthetic splat argument | | params_flow.rb:58:15:58:16 | 23 | type tracker without call steps | params_flow.rb:58:9:58:17 | call to taint | | params_flow.rb:58:15:58:16 | 23 | type tracker without call steps | params_flow.rb:58:15:58:16 | 23 | -| params_flow.rb:58:15:58:16 | 23 | type tracker without call steps with content splat position 0 | params_flow.rb:58:1:58:25 | synthetic splat argument | -| params_flow.rb:58:15:58:16 | 23 | type tracker without call steps with content splat position 0 | params_flow.rb:58:9:58:17 | synthetic splat argument | +| params_flow.rb:58:15:58:16 | 23 | type tracker without call steps with content element 0 | params_flow.rb:58:1:58:25 | synthetic splat argument | +| params_flow.rb:58:15:58:16 | 23 | type tracker without call steps with content element 0 | params_flow.rb:58:9:58:17 | synthetic splat argument | | params_flow.rb:58:20:58:24 | * ... | type tracker with call steps | params_flow.rb:49:17:49:24 | *posargs | | params_flow.rb:58:20:58:24 | * ... | type tracker without call steps | params_flow.rb:58:20:58:24 | * ... | | params_flow.rb:60:1:60:4 | args | type tracker without call steps | params_flow.rb:60:1:60:4 | args | | params_flow.rb:60:8:60:29 | Array | type tracker without call steps | params_flow.rb:60:8:60:29 | Array | | params_flow.rb:60:8:60:29 | call to [] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:60:8:60:29 | call to [] | type tracker with call steps | params_flow.rb:49:13:49:14 | p1 | +| params_flow.rb:60:8:60:29 | call to [] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:60:8:60:29 | call to [] | type tracker with call steps with content element 0 | params_flow.rb:50:5:50:11 | synthetic splat argument | | params_flow.rb:60:8:60:29 | call to [] | type tracker with call steps with content element 0 or unknown | params_flow.rb:49:1:53:3 | synthetic splat parameter | -| params_flow.rb:60:8:60:29 | call to [] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:60:8:60:29 | call to [] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:60:8:60:29 | call to [] | type tracker with call steps with content splat position 0 | params_flow.rb:50:5:50:11 | synthetic splat argument | | params_flow.rb:60:8:60:29 | call to [] | type tracker without call steps | params_flow.rb:60:8:60:29 | call to [] | | params_flow.rb:60:8:60:29 | call to [] | type tracker without call steps with content element 0 or unknown | params_flow.rb:61:9:61:13 | * ... | | params_flow.rb:60:8:60:29 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:60:8:60:29 | synthetic splat argument | type tracker with call steps | params_flow.rb:49:13:49:14 | p1 | +| params_flow.rb:60:8:60:29 | synthetic splat argument | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:60:8:60:29 | synthetic splat argument | type tracker with call steps with content element 0 | params_flow.rb:50:5:50:11 | synthetic splat argument | | params_flow.rb:60:8:60:29 | synthetic splat argument | type tracker with call steps with content element 0 or unknown | params_flow.rb:49:1:53:3 | synthetic splat parameter | -| params_flow.rb:60:8:60:29 | synthetic splat argument | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:60:8:60:29 | synthetic splat argument | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:60:8:60:29 | synthetic splat argument | type tracker with call steps with content splat position 0 | params_flow.rb:50:5:50:11 | synthetic splat argument | | params_flow.rb:60:8:60:29 | synthetic splat argument | type tracker without call steps | params_flow.rb:60:8:60:29 | call to [] | | params_flow.rb:60:8:60:29 | synthetic splat argument | type tracker without call steps | params_flow.rb:60:8:60:29 | synthetic splat argument | | params_flow.rb:60:8:60:29 | synthetic splat argument | type tracker without call steps with content element 0 or unknown | params_flow.rb:61:9:61:13 | * ... | | params_flow.rb:60:9:60:17 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:60:9:60:17 | call to taint | type tracker with call steps | params_flow.rb:49:13:49:14 | p1 | +| params_flow.rb:60:9:60:17 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:60:9:60:17 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:49:1:53:3 | synthetic splat parameter | -| params_flow.rb:60:9:60:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:60:9:60:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:60:9:60:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:50:5:50:11 | synthetic splat argument | +| params_flow.rb:60:9:60:17 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:50:5:50:11 | synthetic splat argument | | params_flow.rb:60:9:60:17 | call to taint | type tracker without call steps | params_flow.rb:60:9:60:17 | call to taint | | params_flow.rb:60:9:60:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:60:8:60:29 | call to [] | | params_flow.rb:60:9:60:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:60:8:60:29 | synthetic splat argument | | params_flow.rb:60:9:60:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:61:9:61:13 | * ... | -| params_flow.rb:60:9:60:17 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:60:9:60:17 | synthetic splat argument | type tracker without call steps | params_flow.rb:60:9:60:17 | synthetic splat argument | | params_flow.rb:60:15:60:16 | 24 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:60:15:60:16 | 24 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:60:15:60:16 | 24 | type tracker with call steps | params_flow.rb:49:13:49:14 | p1 | +| params_flow.rb:60:15:60:16 | 24 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:60:15:60:16 | 24 | type tracker with call steps with content element 0 | params_flow.rb:49:1:53:3 | synthetic splat parameter | -| params_flow.rb:60:15:60:16 | 24 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:60:15:60:16 | 24 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:60:15:60:16 | 24 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:60:15:60:16 | 24 | type tracker with call steps with content splat position 0 | params_flow.rb:50:5:50:11 | synthetic splat argument | +| params_flow.rb:60:15:60:16 | 24 | type tracker with call steps with content element 0 | params_flow.rb:50:5:50:11 | synthetic splat argument | | params_flow.rb:60:15:60:16 | 24 | type tracker without call steps | params_flow.rb:60:9:60:17 | call to taint | | params_flow.rb:60:15:60:16 | 24 | type tracker without call steps | params_flow.rb:60:15:60:16 | 24 | | params_flow.rb:60:15:60:16 | 24 | type tracker without call steps with content element 0 | params_flow.rb:60:8:60:29 | call to [] | | params_flow.rb:60:15:60:16 | 24 | type tracker without call steps with content element 0 | params_flow.rb:60:8:60:29 | synthetic splat argument | +| params_flow.rb:60:15:60:16 | 24 | type tracker without call steps with content element 0 | params_flow.rb:60:9:60:17 | synthetic splat argument | | params_flow.rb:60:15:60:16 | 24 | type tracker without call steps with content element 0 | params_flow.rb:61:9:61:13 | * ... | -| params_flow.rb:60:15:60:16 | 24 | type tracker without call steps with content splat position 0 | params_flow.rb:60:9:60:17 | synthetic splat argument | | params_flow.rb:60:20:60:28 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:60:20:60:28 | call to taint | type tracker with call steps | params_flow.rb:51:11:51:20 | ...[...] | +| params_flow.rb:60:20:60:28 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:60:20:60:28 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:49:17:49:24 | *posargs | +| params_flow.rb:60:20:60:28 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:51:5:51:21 | synthetic splat argument | | params_flow.rb:60:20:60:28 | call to taint | type tracker with call steps with content element 1 | params_flow.rb:49:1:53:3 | synthetic splat parameter | -| params_flow.rb:60:20:60:28 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:60:20:60:28 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:60:20:60:28 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:51:5:51:21 | synthetic splat argument | | params_flow.rb:60:20:60:28 | call to taint | type tracker without call steps | params_flow.rb:60:20:60:28 | call to taint | | params_flow.rb:60:20:60:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:60:8:60:29 | call to [] | | params_flow.rb:60:20:60:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:60:8:60:29 | synthetic splat argument | | params_flow.rb:60:20:60:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:61:9:61:13 | * ... | -| params_flow.rb:60:20:60:28 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:60:20:60:28 | synthetic splat argument | type tracker without call steps | params_flow.rb:60:20:60:28 | synthetic splat argument | | params_flow.rb:60:26:60:27 | 25 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:60:26:60:27 | 25 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:60:26:60:27 | 25 | type tracker with call steps | params_flow.rb:51:11:51:20 | ...[...] | +| params_flow.rb:60:26:60:27 | 25 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:60:26:60:27 | 25 | type tracker with call steps with content element 0 | params_flow.rb:49:17:49:24 | *posargs | +| params_flow.rb:60:26:60:27 | 25 | type tracker with call steps with content element 0 | params_flow.rb:51:5:51:21 | synthetic splat argument | | params_flow.rb:60:26:60:27 | 25 | type tracker with call steps with content element 1 | params_flow.rb:49:1:53:3 | synthetic splat parameter | -| params_flow.rb:60:26:60:27 | 25 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:60:26:60:27 | 25 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:60:26:60:27 | 25 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:60:26:60:27 | 25 | type tracker with call steps with content splat position 0 | params_flow.rb:51:5:51:21 | synthetic splat argument | | params_flow.rb:60:26:60:27 | 25 | type tracker without call steps | params_flow.rb:60:20:60:28 | call to taint | | params_flow.rb:60:26:60:27 | 25 | type tracker without call steps | params_flow.rb:60:26:60:27 | 25 | +| params_flow.rb:60:26:60:27 | 25 | type tracker without call steps with content element 0 | params_flow.rb:60:20:60:28 | synthetic splat argument | | params_flow.rb:60:26:60:27 | 25 | type tracker without call steps with content element 1 | params_flow.rb:60:8:60:29 | call to [] | | params_flow.rb:60:26:60:27 | 25 | type tracker without call steps with content element 1 | params_flow.rb:60:8:60:29 | synthetic splat argument | | params_flow.rb:60:26:60:27 | 25 | type tracker without call steps with content element 1 | params_flow.rb:61:9:61:13 | * ... | -| params_flow.rb:60:26:60:27 | 25 | type tracker without call steps with content splat position 0 | params_flow.rb:60:20:60:28 | synthetic splat argument | | params_flow.rb:61:1:61:14 | call to posargs | type tracker without call steps | params_flow.rb:61:1:61:14 | call to posargs | | params_flow.rb:61:9:61:13 | * ... | type tracker with call steps | params_flow.rb:49:1:53:3 | synthetic splat parameter | | params_flow.rb:61:9:61:13 | * ... | type tracker without call steps | params_flow.rb:61:9:61:13 | * ... | | params_flow.rb:63:1:63:4 | args | type tracker without call steps | params_flow.rb:63:1:63:4 | args | | params_flow.rb:63:8:63:16 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:63:8:63:16 | call to taint | type tracker with call steps | params_flow.rb:65:10:65:13 | ...[...] | +| params_flow.rb:63:8:63:16 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:63:8:63:16 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:65:5:65:13 | synthetic splat argument | | params_flow.rb:63:8:63:16 | call to taint | type tracker with call steps with content element 0 or unknown | params_flow.rb:64:16:64:17 | *x | -| params_flow.rb:63:8:63:16 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:63:8:63:16 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:63:8:63:16 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:65:5:65:13 | synthetic splat argument | | params_flow.rb:63:8:63:16 | call to taint | type tracker without call steps | params_flow.rb:63:8:63:16 | call to taint | | params_flow.rb:63:8:63:16 | call to taint | type tracker without call steps with content element 0 or unknown | params_flow.rb:67:12:67:16 | * ... | -| params_flow.rb:63:8:63:16 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:63:8:63:16 | synthetic splat argument | type tracker without call steps | params_flow.rb:63:8:63:16 | synthetic splat argument | | params_flow.rb:63:14:63:15 | 26 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:63:14:63:15 | 26 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:63:14:63:15 | 26 | type tracker with call steps | params_flow.rb:65:10:65:13 | ...[...] | +| params_flow.rb:63:14:63:15 | 26 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:63:14:63:15 | 26 | type tracker with call steps with content element 0 | params_flow.rb:65:5:65:13 | synthetic splat argument | | params_flow.rb:63:14:63:15 | 26 | type tracker with call steps with content element 0 or unknown | params_flow.rb:64:16:64:17 | *x | -| params_flow.rb:63:14:63:15 | 26 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:63:14:63:15 | 26 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:63:14:63:15 | 26 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:63:14:63:15 | 26 | type tracker with call steps with content splat position 0 | params_flow.rb:65:5:65:13 | synthetic splat argument | | params_flow.rb:63:14:63:15 | 26 | type tracker without call steps | params_flow.rb:63:8:63:16 | call to taint | | params_flow.rb:63:14:63:15 | 26 | type tracker without call steps | params_flow.rb:63:14:63:15 | 26 | +| params_flow.rb:63:14:63:15 | 26 | type tracker without call steps with content element 0 | params_flow.rb:63:8:63:16 | synthetic splat argument | | params_flow.rb:63:14:63:15 | 26 | type tracker without call steps with content element 0 or unknown | params_flow.rb:67:12:67:16 | * ... | -| params_flow.rb:63:14:63:15 | 26 | type tracker without call steps with content splat position 0 | params_flow.rb:63:8:63:16 | synthetic splat argument | | params_flow.rb:64:1:66:3 | &block | type tracker without call steps | params_flow.rb:64:1:66:3 | &block | | params_flow.rb:64:1:66:3 | self in splatstuff | type tracker with call steps | params_flow.rb:5:1:7:3 | self in sink | | params_flow.rb:64:1:66:3 | self in splatstuff | type tracker without call steps | params_flow.rb:64:1:66:3 | self in splatstuff | @@ -1567,16 +1344,14 @@ track | params_flow.rb:64:17:64:17 | x | type tracker without call steps | params_flow.rb:64:17:64:17 | x | | params_flow.rb:65:5:65:13 | call to sink | type tracker without call steps | params_flow.rb:65:5:65:13 | call to sink | | params_flow.rb:65:5:65:13 | call to sink | type tracker without call steps | params_flow.rb:67:1:67:17 | call to splatstuff | -| params_flow.rb:65:5:65:13 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:65:5:65:13 | synthetic splat argument | type tracker without call steps | params_flow.rb:65:5:65:13 | synthetic splat argument | | params_flow.rb:65:10:65:13 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:65:10:65:13 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:65:10:65:13 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:65:10:65:13 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:65:10:65:13 | ...[...] | type tracker without call steps | params_flow.rb:65:10:65:13 | ...[...] | -| params_flow.rb:65:10:65:13 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:65:5:65:13 | synthetic splat argument | +| params_flow.rb:65:10:65:13 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:65:5:65:13 | synthetic splat argument | | params_flow.rb:65:10:65:13 | synthetic splat argument | type tracker without call steps | params_flow.rb:65:10:65:13 | synthetic splat argument | | params_flow.rb:65:12:65:12 | 0 | type tracker without call steps | params_flow.rb:65:12:65:12 | 0 | -| params_flow.rb:65:12:65:12 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:65:10:65:13 | synthetic splat argument | +| params_flow.rb:65:12:65:12 | 0 | type tracker without call steps with content element 0 | params_flow.rb:65:10:65:13 | synthetic splat argument | | params_flow.rb:67:1:67:17 | call to splatstuff | type tracker without call steps | params_flow.rb:67:1:67:17 | call to splatstuff | | params_flow.rb:67:12:67:16 | * ... | type tracker with call steps | params_flow.rb:64:16:64:17 | *x | | params_flow.rb:67:12:67:16 | * ... | type tracker without call steps | params_flow.rb:67:12:67:16 | * ... | @@ -1586,905 +1361,695 @@ track | params_flow.rb:69:1:76:3 | splatmid | type tracker without call steps | params_flow.rb:69:1:76:3 | splatmid | | params_flow.rb:69:1:76:3 | synthetic splat parameter | type tracker without call steps | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:69:14:69:14 | x | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:69:14:69:14 | x | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:69:14:69:14 | x | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:69:14:69:14 | x | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:69:14:69:14 | x | type tracker without call steps | params_flow.rb:69:14:69:14 | x | | params_flow.rb:69:14:69:14 | x | type tracker without call steps | params_flow.rb:69:14:69:14 | x | -| params_flow.rb:69:14:69:14 | x | type tracker without call steps with content splat position 0 | params_flow.rb:70:5:70:10 | synthetic splat argument | +| params_flow.rb:69:14:69:14 | x | type tracker without call steps with content element 0 | params_flow.rb:70:5:70:10 | synthetic splat argument | | params_flow.rb:69:17:69:17 | y | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:69:17:69:17 | y | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:69:17:69:17 | y | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:69:17:69:17 | y | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:69:17:69:17 | y | type tracker without call steps | params_flow.rb:69:17:69:17 | y | | params_flow.rb:69:17:69:17 | y | type tracker without call steps | params_flow.rb:69:17:69:17 | y | -| params_flow.rb:69:17:69:17 | y | type tracker without call steps with content splat position 0 | params_flow.rb:71:5:71:10 | synthetic splat argument | +| params_flow.rb:69:17:69:17 | y | type tracker without call steps with content element 0 | params_flow.rb:71:5:71:10 | synthetic splat argument | | params_flow.rb:69:20:69:21 | *z | type tracker without call steps | params_flow.rb:69:20:69:21 | *z | | params_flow.rb:69:21:69:21 | z | type tracker without call steps | params_flow.rb:69:21:69:21 | z | | params_flow.rb:69:24:69:24 | w | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:69:24:69:24 | w | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:69:24:69:24 | w | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:69:24:69:24 | w | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:69:24:69:24 | w | type tracker without call steps | params_flow.rb:69:24:69:24 | w | | params_flow.rb:69:24:69:24 | w | type tracker without call steps | params_flow.rb:69:24:69:24 | w | -| params_flow.rb:69:24:69:24 | w | type tracker without call steps with content splat position 0 | params_flow.rb:74:5:74:10 | synthetic splat argument | +| params_flow.rb:69:24:69:24 | w | type tracker without call steps with content element 0 | params_flow.rb:74:5:74:10 | synthetic splat argument | | params_flow.rb:69:27:69:27 | r | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:69:27:69:27 | r | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:69:27:69:27 | r | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:69:27:69:27 | r | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:69:27:69:27 | r | type tracker without call steps | params_flow.rb:69:27:69:27 | r | | params_flow.rb:69:27:69:27 | r | type tracker without call steps | params_flow.rb:69:27:69:27 | r | -| params_flow.rb:69:27:69:27 | r | type tracker without call steps with content splat position 0 | params_flow.rb:75:5:75:10 | synthetic splat argument | +| params_flow.rb:69:27:69:27 | r | type tracker without call steps with content element 0 | params_flow.rb:75:5:75:10 | synthetic splat argument | | params_flow.rb:70:5:70:10 | call to sink | type tracker without call steps | params_flow.rb:70:5:70:10 | call to sink | -| params_flow.rb:70:5:70:10 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:70:5:70:10 | synthetic splat argument | type tracker without call steps | params_flow.rb:70:5:70:10 | synthetic splat argument | | params_flow.rb:71:5:71:10 | call to sink | type tracker without call steps | params_flow.rb:71:5:71:10 | call to sink | -| params_flow.rb:71:5:71:10 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:71:5:71:10 | synthetic splat argument | type tracker without call steps | params_flow.rb:71:5:71:10 | synthetic splat argument | | params_flow.rb:72:5:72:13 | call to sink | type tracker without call steps | params_flow.rb:72:5:72:13 | call to sink | -| params_flow.rb:72:5:72:13 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:72:5:72:13 | synthetic splat argument | type tracker without call steps | params_flow.rb:72:5:72:13 | synthetic splat argument | | params_flow.rb:72:10:72:13 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:72:10:72:13 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:72:10:72:13 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:72:10:72:13 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:72:10:72:13 | ...[...] | type tracker without call steps | params_flow.rb:72:10:72:13 | ...[...] | -| params_flow.rb:72:10:72:13 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:72:5:72:13 | synthetic splat argument | +| params_flow.rb:72:10:72:13 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:72:5:72:13 | synthetic splat argument | | params_flow.rb:72:10:72:13 | synthetic splat argument | type tracker without call steps | params_flow.rb:72:10:72:13 | synthetic splat argument | | params_flow.rb:72:12:72:12 | 0 | type tracker without call steps | params_flow.rb:72:12:72:12 | 0 | -| params_flow.rb:72:12:72:12 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:72:10:72:13 | synthetic splat argument | +| params_flow.rb:72:12:72:12 | 0 | type tracker without call steps with content element 0 | params_flow.rb:72:10:72:13 | synthetic splat argument | | params_flow.rb:73:5:73:13 | call to sink | type tracker without call steps | params_flow.rb:73:5:73:13 | call to sink | -| params_flow.rb:73:5:73:13 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:73:5:73:13 | synthetic splat argument | type tracker without call steps | params_flow.rb:73:5:73:13 | synthetic splat argument | | params_flow.rb:73:10:73:13 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:73:10:73:13 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:73:10:73:13 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:73:10:73:13 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:73:10:73:13 | ...[...] | type tracker without call steps | params_flow.rb:73:10:73:13 | ...[...] | -| params_flow.rb:73:10:73:13 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:73:5:73:13 | synthetic splat argument | +| params_flow.rb:73:10:73:13 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:73:5:73:13 | synthetic splat argument | | params_flow.rb:73:10:73:13 | synthetic splat argument | type tracker without call steps | params_flow.rb:73:10:73:13 | synthetic splat argument | | params_flow.rb:73:12:73:12 | 1 | type tracker without call steps | params_flow.rb:73:12:73:12 | 1 | -| params_flow.rb:73:12:73:12 | 1 | type tracker without call steps with content splat position 0 | params_flow.rb:73:10:73:13 | synthetic splat argument | +| params_flow.rb:73:12:73:12 | 1 | type tracker without call steps with content element 0 | params_flow.rb:73:10:73:13 | synthetic splat argument | | params_flow.rb:74:5:74:10 | call to sink | type tracker without call steps | params_flow.rb:74:5:74:10 | call to sink | -| params_flow.rb:74:5:74:10 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:74:5:74:10 | synthetic splat argument | type tracker without call steps | params_flow.rb:74:5:74:10 | synthetic splat argument | | params_flow.rb:75:5:75:10 | call to sink | type tracker without call steps | params_flow.rb:75:5:75:10 | call to sink | | params_flow.rb:75:5:75:10 | call to sink | type tracker without call steps | params_flow.rb:78:1:78:63 | call to splatmid | | params_flow.rb:75:5:75:10 | call to sink | type tracker without call steps | params_flow.rb:81:1:81:37 | call to splatmid | | params_flow.rb:75:5:75:10 | call to sink | type tracker without call steps | params_flow.rb:96:1:96:88 | call to splatmid | -| params_flow.rb:75:5:75:10 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:75:5:75:10 | synthetic splat argument | type tracker without call steps | params_flow.rb:75:5:75:10 | synthetic splat argument | | params_flow.rb:78:1:78:63 | call to splatmid | type tracker without call steps | params_flow.rb:78:1:78:63 | call to splatmid | | params_flow.rb:78:1:78:63 | synthetic splat argument | type tracker with call steps | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:78:1:78:63 | synthetic splat argument | type tracker without call steps | params_flow.rb:78:1:78:63 | synthetic splat argument | | params_flow.rb:78:10:78:18 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:78:10:78:18 | call to taint | type tracker with call steps | params_flow.rb:69:14:69:14 | x | -| params_flow.rb:78:10:78:18 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:78:10:78:18 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:78:10:78:18 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:69:1:76:3 | synthetic splat parameter | -| params_flow.rb:78:10:78:18 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:70:5:70:10 | synthetic splat argument | +| params_flow.rb:78:10:78:18 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:78:10:78:18 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:78:10:78:18 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:70:5:70:10 | synthetic splat argument | | params_flow.rb:78:10:78:18 | call to taint | type tracker without call steps | params_flow.rb:78:10:78:18 | call to taint | -| params_flow.rb:78:10:78:18 | call to taint | type tracker without call steps with content splat position 0 | params_flow.rb:78:1:78:63 | synthetic splat argument | -| params_flow.rb:78:10:78:18 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:78:10:78:18 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:78:1:78:63 | synthetic splat argument | | params_flow.rb:78:10:78:18 | synthetic splat argument | type tracker without call steps | params_flow.rb:78:10:78:18 | synthetic splat argument | | params_flow.rb:78:16:78:17 | 27 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:78:16:78:17 | 27 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:78:16:78:17 | 27 | type tracker with call steps | params_flow.rb:69:14:69:14 | x | -| params_flow.rb:78:16:78:17 | 27 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:78:16:78:17 | 27 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:78:16:78:17 | 27 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:78:16:78:17 | 27 | type tracker with call steps with content splat position 0 | params_flow.rb:69:1:76:3 | synthetic splat parameter | -| params_flow.rb:78:16:78:17 | 27 | type tracker with call steps with content splat position 0 | params_flow.rb:70:5:70:10 | synthetic splat argument | +| params_flow.rb:78:16:78:17 | 27 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:78:16:78:17 | 27 | type tracker with call steps with content element 0 | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:78:16:78:17 | 27 | type tracker with call steps with content element 0 | params_flow.rb:70:5:70:10 | synthetic splat argument | | params_flow.rb:78:16:78:17 | 27 | type tracker without call steps | params_flow.rb:78:10:78:18 | call to taint | | params_flow.rb:78:16:78:17 | 27 | type tracker without call steps | params_flow.rb:78:16:78:17 | 27 | -| params_flow.rb:78:16:78:17 | 27 | type tracker without call steps with content splat position 0 | params_flow.rb:78:1:78:63 | synthetic splat argument | -| params_flow.rb:78:16:78:17 | 27 | type tracker without call steps with content splat position 0 | params_flow.rb:78:10:78:18 | synthetic splat argument | +| params_flow.rb:78:16:78:17 | 27 | type tracker without call steps with content element 0 | params_flow.rb:78:1:78:63 | synthetic splat argument | +| params_flow.rb:78:16:78:17 | 27 | type tracker without call steps with content element 0 | params_flow.rb:78:10:78:18 | synthetic splat argument | | params_flow.rb:78:21:78:29 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:78:21:78:29 | call to taint | type tracker with call steps | params_flow.rb:69:17:69:17 | y | -| params_flow.rb:78:21:78:29 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:78:21:78:29 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:78:21:78:29 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:71:5:71:10 | synthetic splat argument | -| params_flow.rb:78:21:78:29 | call to taint | type tracker with call steps with content splat position 1 | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:78:21:78:29 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:78:21:78:29 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:71:5:71:10 | synthetic splat argument | +| params_flow.rb:78:21:78:29 | call to taint | type tracker with call steps with content element 1 | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:78:21:78:29 | call to taint | type tracker without call steps | params_flow.rb:78:21:78:29 | call to taint | -| params_flow.rb:78:21:78:29 | call to taint | type tracker without call steps with content splat position 1 | params_flow.rb:78:1:78:63 | synthetic splat argument | -| params_flow.rb:78:21:78:29 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:78:21:78:29 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:78:1:78:63 | synthetic splat argument | | params_flow.rb:78:21:78:29 | synthetic splat argument | type tracker without call steps | params_flow.rb:78:21:78:29 | synthetic splat argument | | params_flow.rb:78:27:78:28 | 28 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:78:27:78:28 | 28 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:78:27:78:28 | 28 | type tracker with call steps | params_flow.rb:69:17:69:17 | y | -| params_flow.rb:78:27:78:28 | 28 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:78:27:78:28 | 28 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:78:27:78:28 | 28 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:78:27:78:28 | 28 | type tracker with call steps with content splat position 0 | params_flow.rb:71:5:71:10 | synthetic splat argument | -| params_flow.rb:78:27:78:28 | 28 | type tracker with call steps with content splat position 1 | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:78:27:78:28 | 28 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:78:27:78:28 | 28 | type tracker with call steps with content element 0 | params_flow.rb:71:5:71:10 | synthetic splat argument | +| params_flow.rb:78:27:78:28 | 28 | type tracker with call steps with content element 1 | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:78:27:78:28 | 28 | type tracker without call steps | params_flow.rb:78:21:78:29 | call to taint | | params_flow.rb:78:27:78:28 | 28 | type tracker without call steps | params_flow.rb:78:27:78:28 | 28 | -| params_flow.rb:78:27:78:28 | 28 | type tracker without call steps with content splat position 0 | params_flow.rb:78:21:78:29 | synthetic splat argument | -| params_flow.rb:78:27:78:28 | 28 | type tracker without call steps with content splat position 1 | params_flow.rb:78:1:78:63 | synthetic splat argument | -| params_flow.rb:78:32:78:40 | call to taint | type tracker with call steps with content splat position 2 | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:78:27:78:28 | 28 | type tracker without call steps with content element 0 | params_flow.rb:78:21:78:29 | synthetic splat argument | +| params_flow.rb:78:27:78:28 | 28 | type tracker without call steps with content element 1 | params_flow.rb:78:1:78:63 | synthetic splat argument | +| params_flow.rb:78:32:78:40 | call to taint | type tracker with call steps with content element 2 | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:78:32:78:40 | call to taint | type tracker without call steps | params_flow.rb:78:32:78:40 | call to taint | -| params_flow.rb:78:32:78:40 | call to taint | type tracker without call steps with content splat position 2 | params_flow.rb:78:1:78:63 | synthetic splat argument | -| params_flow.rb:78:32:78:40 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:78:32:78:40 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:78:1:78:63 | synthetic splat argument | | params_flow.rb:78:32:78:40 | synthetic splat argument | type tracker without call steps | params_flow.rb:78:32:78:40 | synthetic splat argument | | params_flow.rb:78:38:78:39 | 29 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | -| params_flow.rb:78:38:78:39 | 29 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:78:38:78:39 | 29 | type tracker with call steps with content splat position 2 | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:78:38:78:39 | 29 | type tracker with call steps with content element 2 | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:78:38:78:39 | 29 | type tracker without call steps | params_flow.rb:78:32:78:40 | call to taint | | params_flow.rb:78:38:78:39 | 29 | type tracker without call steps | params_flow.rb:78:38:78:39 | 29 | -| params_flow.rb:78:38:78:39 | 29 | type tracker without call steps with content splat position 0 | params_flow.rb:78:32:78:40 | synthetic splat argument | -| params_flow.rb:78:38:78:39 | 29 | type tracker without call steps with content splat position 2 | params_flow.rb:78:1:78:63 | synthetic splat argument | -| params_flow.rb:78:43:78:51 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:78:43:78:51 | call to taint | type tracker with call steps | params_flow.rb:69:24:69:24 | w | -| params_flow.rb:78:43:78:51 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:78:43:78:51 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:78:43:78:51 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:74:5:74:10 | synthetic splat argument | -| params_flow.rb:78:43:78:51 | call to taint | type tracker with call steps with content splat position 3 | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:78:38:78:39 | 29 | type tracker without call steps with content element 0 | params_flow.rb:78:32:78:40 | synthetic splat argument | +| params_flow.rb:78:38:78:39 | 29 | type tracker without call steps with content element 2 | params_flow.rb:78:1:78:63 | synthetic splat argument | +| params_flow.rb:78:43:78:51 | call to taint | type tracker with call steps with content element 3 | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:78:43:78:51 | call to taint | type tracker without call steps | params_flow.rb:78:43:78:51 | call to taint | -| params_flow.rb:78:43:78:51 | call to taint | type tracker without call steps with content splat position 3 | params_flow.rb:78:1:78:63 | synthetic splat argument | -| params_flow.rb:78:43:78:51 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:78:43:78:51 | call to taint | type tracker without call steps with content element 3 | params_flow.rb:78:1:78:63 | synthetic splat argument | | params_flow.rb:78:43:78:51 | synthetic splat argument | type tracker without call steps | params_flow.rb:78:43:78:51 | synthetic splat argument | | params_flow.rb:78:49:78:50 | 30 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | -| params_flow.rb:78:49:78:50 | 30 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:78:49:78:50 | 30 | type tracker with call steps | params_flow.rb:69:24:69:24 | w | -| params_flow.rb:78:49:78:50 | 30 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:78:49:78:50 | 30 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:78:49:78:50 | 30 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:78:49:78:50 | 30 | type tracker with call steps with content splat position 0 | params_flow.rb:74:5:74:10 | synthetic splat argument | -| params_flow.rb:78:49:78:50 | 30 | type tracker with call steps with content splat position 3 | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:78:49:78:50 | 30 | type tracker with call steps with content element 3 | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:78:49:78:50 | 30 | type tracker without call steps | params_flow.rb:78:43:78:51 | call to taint | | params_flow.rb:78:49:78:50 | 30 | type tracker without call steps | params_flow.rb:78:49:78:50 | 30 | -| params_flow.rb:78:49:78:50 | 30 | type tracker without call steps with content splat position 0 | params_flow.rb:78:43:78:51 | synthetic splat argument | -| params_flow.rb:78:49:78:50 | 30 | type tracker without call steps with content splat position 3 | params_flow.rb:78:1:78:63 | synthetic splat argument | -| params_flow.rb:78:54:78:62 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:78:54:78:62 | call to taint | type tracker with call steps | params_flow.rb:69:27:69:27 | r | -| params_flow.rb:78:54:78:62 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:78:54:78:62 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:78:54:78:62 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:75:5:75:10 | synthetic splat argument | -| params_flow.rb:78:54:78:62 | call to taint | type tracker with call steps with content splat position 4 | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:78:49:78:50 | 30 | type tracker without call steps with content element 0 | params_flow.rb:78:43:78:51 | synthetic splat argument | +| params_flow.rb:78:49:78:50 | 30 | type tracker without call steps with content element 3 | params_flow.rb:78:1:78:63 | synthetic splat argument | +| params_flow.rb:78:54:78:62 | call to taint | type tracker with call steps with content element 4 | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:78:54:78:62 | call to taint | type tracker without call steps | params_flow.rb:78:54:78:62 | call to taint | -| params_flow.rb:78:54:78:62 | call to taint | type tracker without call steps with content splat position 4 | params_flow.rb:78:1:78:63 | synthetic splat argument | -| params_flow.rb:78:54:78:62 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:78:54:78:62 | call to taint | type tracker without call steps with content element 4 | params_flow.rb:78:1:78:63 | synthetic splat argument | | params_flow.rb:78:54:78:62 | synthetic splat argument | type tracker without call steps | params_flow.rb:78:54:78:62 | synthetic splat argument | | params_flow.rb:78:60:78:61 | 31 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | -| params_flow.rb:78:60:78:61 | 31 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:78:60:78:61 | 31 | type tracker with call steps | params_flow.rb:69:27:69:27 | r | -| params_flow.rb:78:60:78:61 | 31 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:78:60:78:61 | 31 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:78:60:78:61 | 31 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:78:60:78:61 | 31 | type tracker with call steps with content splat position 0 | params_flow.rb:75:5:75:10 | synthetic splat argument | -| params_flow.rb:78:60:78:61 | 31 | type tracker with call steps with content splat position 4 | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:78:60:78:61 | 31 | type tracker with call steps with content element 4 | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:78:60:78:61 | 31 | type tracker without call steps | params_flow.rb:78:54:78:62 | call to taint | | params_flow.rb:78:60:78:61 | 31 | type tracker without call steps | params_flow.rb:78:60:78:61 | 31 | -| params_flow.rb:78:60:78:61 | 31 | type tracker without call steps with content splat position 0 | params_flow.rb:78:54:78:62 | synthetic splat argument | -| params_flow.rb:78:60:78:61 | 31 | type tracker without call steps with content splat position 4 | params_flow.rb:78:1:78:63 | synthetic splat argument | +| params_flow.rb:78:60:78:61 | 31 | type tracker without call steps with content element 0 | params_flow.rb:78:54:78:62 | synthetic splat argument | +| params_flow.rb:78:60:78:61 | 31 | type tracker without call steps with content element 4 | params_flow.rb:78:1:78:63 | synthetic splat argument | | params_flow.rb:80:1:80:4 | args | type tracker without call steps | params_flow.rb:80:1:80:4 | args | | params_flow.rb:80:8:80:51 | Array | type tracker without call steps | params_flow.rb:80:8:80:51 | Array | | params_flow.rb:80:8:80:51 | call to [] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:80:8:80:51 | call to [] | type tracker with call steps | params_flow.rb:69:17:69:17 | y | -| params_flow.rb:80:8:80:51 | call to [] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:80:8:80:51 | call to [] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:80:8:80:51 | call to [] | type tracker with call steps with content splat position 0 | params_flow.rb:71:5:71:10 | synthetic splat argument | -| params_flow.rb:80:8:80:51 | call to [] | type tracker with call steps with content splat position 1 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:80:8:80:51 | call to [] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:80:8:80:51 | call to [] | type tracker with call steps with content element 0 | params_flow.rb:71:5:71:10 | synthetic splat argument | +| params_flow.rb:80:8:80:51 | call to [] | type tracker with call steps with content element 1 | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:80:8:80:51 | call to [] | type tracker without call steps | params_flow.rb:80:8:80:51 | call to [] | | params_flow.rb:80:8:80:51 | call to [] | type tracker without call steps with content element 0 or unknown | params_flow.rb:81:21:81:25 | * ... | -| params_flow.rb:80:8:80:51 | call to [] | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:81:1:81:37 | synthetic splat argument | +| params_flow.rb:80:8:80:51 | call to [] | type tracker without call steps with content element 1 | params_flow.rb:81:1:81:37 | synthetic splat argument | | params_flow.rb:80:8:80:51 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:80:8:80:51 | synthetic splat argument | type tracker with call steps | params_flow.rb:69:17:69:17 | y | -| params_flow.rb:80:8:80:51 | synthetic splat argument | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:80:8:80:51 | synthetic splat argument | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:80:8:80:51 | synthetic splat argument | type tracker with call steps with content splat position 0 | params_flow.rb:71:5:71:10 | synthetic splat argument | -| params_flow.rb:80:8:80:51 | synthetic splat argument | type tracker with call steps with content splat position 1 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:80:8:80:51 | synthetic splat argument | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:80:8:80:51 | synthetic splat argument | type tracker with call steps with content element 0 | params_flow.rb:71:5:71:10 | synthetic splat argument | +| params_flow.rb:80:8:80:51 | synthetic splat argument | type tracker with call steps with content element 1 | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:80:8:80:51 | synthetic splat argument | type tracker without call steps | params_flow.rb:80:8:80:51 | call to [] | | params_flow.rb:80:8:80:51 | synthetic splat argument | type tracker without call steps | params_flow.rb:80:8:80:51 | synthetic splat argument | | params_flow.rb:80:8:80:51 | synthetic splat argument | type tracker without call steps with content element 0 or unknown | params_flow.rb:81:21:81:25 | * ... | -| params_flow.rb:80:8:80:51 | synthetic splat argument | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:81:1:81:37 | synthetic splat argument | +| params_flow.rb:80:8:80:51 | synthetic splat argument | type tracker without call steps with content element 1 | params_flow.rb:81:1:81:37 | synthetic splat argument | | params_flow.rb:80:9:80:17 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:80:9:80:17 | call to taint | type tracker with call steps | params_flow.rb:69:17:69:17 | y | -| params_flow.rb:80:9:80:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:80:9:80:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:80:9:80:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:71:5:71:10 | synthetic splat argument | -| params_flow.rb:80:9:80:17 | call to taint | type tracker with call steps with content splat position 1 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:80:9:80:17 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:80:9:80:17 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:71:5:71:10 | synthetic splat argument | +| params_flow.rb:80:9:80:17 | call to taint | type tracker with call steps with content element 1 | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:80:9:80:17 | call to taint | type tracker without call steps | params_flow.rb:80:9:80:17 | call to taint | | params_flow.rb:80:9:80:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:80:8:80:51 | call to [] | | params_flow.rb:80:9:80:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:80:8:80:51 | synthetic splat argument | | params_flow.rb:80:9:80:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:81:21:81:25 | * ... | -| params_flow.rb:80:9:80:17 | call to taint | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:81:1:81:37 | synthetic splat argument | -| params_flow.rb:80:9:80:17 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:80:9:80:17 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:81:1:81:37 | synthetic splat argument | | params_flow.rb:80:9:80:17 | synthetic splat argument | type tracker without call steps | params_flow.rb:80:9:80:17 | synthetic splat argument | | params_flow.rb:80:15:80:16 | 33 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:80:15:80:16 | 33 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:80:15:80:16 | 33 | type tracker with call steps | params_flow.rb:69:17:69:17 | y | -| params_flow.rb:80:15:80:16 | 33 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:80:15:80:16 | 33 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:80:15:80:16 | 33 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:80:15:80:16 | 33 | type tracker with call steps with content splat position 0 | params_flow.rb:71:5:71:10 | synthetic splat argument | -| params_flow.rb:80:15:80:16 | 33 | type tracker with call steps with content splat position 1 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:80:15:80:16 | 33 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:80:15:80:16 | 33 | type tracker with call steps with content element 0 | params_flow.rb:71:5:71:10 | synthetic splat argument | +| params_flow.rb:80:15:80:16 | 33 | type tracker with call steps with content element 1 | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:80:15:80:16 | 33 | type tracker without call steps | params_flow.rb:80:9:80:17 | call to taint | | params_flow.rb:80:15:80:16 | 33 | type tracker without call steps | params_flow.rb:80:15:80:16 | 33 | | params_flow.rb:80:15:80:16 | 33 | type tracker without call steps with content element 0 | params_flow.rb:80:8:80:51 | call to [] | | params_flow.rb:80:15:80:16 | 33 | type tracker without call steps with content element 0 | params_flow.rb:80:8:80:51 | synthetic splat argument | +| params_flow.rb:80:15:80:16 | 33 | type tracker without call steps with content element 0 | params_flow.rb:80:9:80:17 | synthetic splat argument | | params_flow.rb:80:15:80:16 | 33 | type tracker without call steps with content element 0 | params_flow.rb:81:21:81:25 | * ... | -| params_flow.rb:80:15:80:16 | 33 | type tracker without call steps with content splat position 0 | params_flow.rb:80:9:80:17 | synthetic splat argument | -| params_flow.rb:80:15:80:16 | 33 | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:81:1:81:37 | synthetic splat argument | -| params_flow.rb:80:20:80:28 | call to taint | type tracker with call steps with content splat position 2 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:80:15:80:16 | 33 | type tracker without call steps with content element 1 | params_flow.rb:81:1:81:37 | synthetic splat argument | +| params_flow.rb:80:20:80:28 | call to taint | type tracker with call steps with content element 2 | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:80:20:80:28 | call to taint | type tracker without call steps | params_flow.rb:80:20:80:28 | call to taint | | params_flow.rb:80:20:80:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:80:8:80:51 | call to [] | | params_flow.rb:80:20:80:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:80:8:80:51 | synthetic splat argument | | params_flow.rb:80:20:80:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:81:21:81:25 | * ... | -| params_flow.rb:80:20:80:28 | call to taint | type tracker without call steps with content splat position 2 (shifted) | params_flow.rb:81:1:81:37 | synthetic splat argument | -| params_flow.rb:80:20:80:28 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:80:20:80:28 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:81:1:81:37 | synthetic splat argument | | params_flow.rb:80:20:80:28 | synthetic splat argument | type tracker without call steps | params_flow.rb:80:20:80:28 | synthetic splat argument | | params_flow.rb:80:26:80:27 | 34 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | -| params_flow.rb:80:26:80:27 | 34 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:80:26:80:27 | 34 | type tracker with call steps with content splat position 2 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:80:26:80:27 | 34 | type tracker with call steps with content element 2 | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:80:26:80:27 | 34 | type tracker without call steps | params_flow.rb:80:20:80:28 | call to taint | | params_flow.rb:80:26:80:27 | 34 | type tracker without call steps | params_flow.rb:80:26:80:27 | 34 | +| params_flow.rb:80:26:80:27 | 34 | type tracker without call steps with content element 0 | params_flow.rb:80:20:80:28 | synthetic splat argument | | params_flow.rb:80:26:80:27 | 34 | type tracker without call steps with content element 1 | params_flow.rb:80:8:80:51 | call to [] | | params_flow.rb:80:26:80:27 | 34 | type tracker without call steps with content element 1 | params_flow.rb:80:8:80:51 | synthetic splat argument | | params_flow.rb:80:26:80:27 | 34 | type tracker without call steps with content element 1 | params_flow.rb:81:21:81:25 | * ... | -| params_flow.rb:80:26:80:27 | 34 | type tracker without call steps with content splat position 0 | params_flow.rb:80:20:80:28 | synthetic splat argument | -| params_flow.rb:80:26:80:27 | 34 | type tracker without call steps with content splat position 2 (shifted) | params_flow.rb:81:1:81:37 | synthetic splat argument | -| params_flow.rb:80:31:80:39 | call to taint | type tracker with call steps with content splat position 3 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:80:26:80:27 | 34 | type tracker without call steps with content element 2 | params_flow.rb:81:1:81:37 | synthetic splat argument | +| params_flow.rb:80:31:80:39 | call to taint | type tracker with call steps with content element 3 | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:80:31:80:39 | call to taint | type tracker without call steps | params_flow.rb:80:31:80:39 | call to taint | | params_flow.rb:80:31:80:39 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:80:8:80:51 | call to [] | | params_flow.rb:80:31:80:39 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:80:8:80:51 | synthetic splat argument | | params_flow.rb:80:31:80:39 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:81:21:81:25 | * ... | -| params_flow.rb:80:31:80:39 | call to taint | type tracker without call steps with content splat position 3 (shifted) | params_flow.rb:81:1:81:37 | synthetic splat argument | -| params_flow.rb:80:31:80:39 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:80:31:80:39 | call to taint | type tracker without call steps with content element 3 | params_flow.rb:81:1:81:37 | synthetic splat argument | | params_flow.rb:80:31:80:39 | synthetic splat argument | type tracker without call steps | params_flow.rb:80:31:80:39 | synthetic splat argument | | params_flow.rb:80:37:80:38 | 35 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | -| params_flow.rb:80:37:80:38 | 35 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:80:37:80:38 | 35 | type tracker with call steps with content splat position 3 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:80:37:80:38 | 35 | type tracker with call steps with content element 3 | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:80:37:80:38 | 35 | type tracker without call steps | params_flow.rb:80:31:80:39 | call to taint | | params_flow.rb:80:37:80:38 | 35 | type tracker without call steps | params_flow.rb:80:37:80:38 | 35 | +| params_flow.rb:80:37:80:38 | 35 | type tracker without call steps with content element 0 | params_flow.rb:80:31:80:39 | synthetic splat argument | | params_flow.rb:80:37:80:38 | 35 | type tracker without call steps with content element 2 | params_flow.rb:80:8:80:51 | call to [] | | params_flow.rb:80:37:80:38 | 35 | type tracker without call steps with content element 2 | params_flow.rb:80:8:80:51 | synthetic splat argument | | params_flow.rb:80:37:80:38 | 35 | type tracker without call steps with content element 2 | params_flow.rb:81:21:81:25 | * ... | -| params_flow.rb:80:37:80:38 | 35 | type tracker without call steps with content splat position 0 | params_flow.rb:80:31:80:39 | synthetic splat argument | -| params_flow.rb:80:37:80:38 | 35 | type tracker without call steps with content splat position 3 (shifted) | params_flow.rb:81:1:81:37 | synthetic splat argument | -| params_flow.rb:80:42:80:50 | call to taint | type tracker with call steps with content splat position 4 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:80:37:80:38 | 35 | type tracker without call steps with content element 3 | params_flow.rb:81:1:81:37 | synthetic splat argument | +| params_flow.rb:80:42:80:50 | call to taint | type tracker with call steps with content element 4 | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:80:42:80:50 | call to taint | type tracker without call steps | params_flow.rb:80:42:80:50 | call to taint | | params_flow.rb:80:42:80:50 | call to taint | type tracker without call steps with content element 3 | params_flow.rb:80:8:80:51 | call to [] | | params_flow.rb:80:42:80:50 | call to taint | type tracker without call steps with content element 3 | params_flow.rb:80:8:80:51 | synthetic splat argument | | params_flow.rb:80:42:80:50 | call to taint | type tracker without call steps with content element 3 | params_flow.rb:81:21:81:25 | * ... | -| params_flow.rb:80:42:80:50 | call to taint | type tracker without call steps with content splat position 4 (shifted) | params_flow.rb:81:1:81:37 | synthetic splat argument | -| params_flow.rb:80:42:80:50 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:80:42:80:50 | call to taint | type tracker without call steps with content element 4 | params_flow.rb:81:1:81:37 | synthetic splat argument | | params_flow.rb:80:42:80:50 | synthetic splat argument | type tracker without call steps | params_flow.rb:80:42:80:50 | synthetic splat argument | | params_flow.rb:80:48:80:49 | 36 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | -| params_flow.rb:80:48:80:49 | 36 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:80:48:80:49 | 36 | type tracker with call steps with content splat position 4 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:80:48:80:49 | 36 | type tracker with call steps with content element 4 | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:80:48:80:49 | 36 | type tracker without call steps | params_flow.rb:80:42:80:50 | call to taint | | params_flow.rb:80:48:80:49 | 36 | type tracker without call steps | params_flow.rb:80:48:80:49 | 36 | +| params_flow.rb:80:48:80:49 | 36 | type tracker without call steps with content element 0 | params_flow.rb:80:42:80:50 | synthetic splat argument | | params_flow.rb:80:48:80:49 | 36 | type tracker without call steps with content element 3 | params_flow.rb:80:8:80:51 | call to [] | | params_flow.rb:80:48:80:49 | 36 | type tracker without call steps with content element 3 | params_flow.rb:80:8:80:51 | synthetic splat argument | | params_flow.rb:80:48:80:49 | 36 | type tracker without call steps with content element 3 | params_flow.rb:81:21:81:25 | * ... | -| params_flow.rb:80:48:80:49 | 36 | type tracker without call steps with content splat position 0 | params_flow.rb:80:42:80:50 | synthetic splat argument | -| params_flow.rb:80:48:80:49 | 36 | type tracker without call steps with content splat position 4 (shifted) | params_flow.rb:81:1:81:37 | synthetic splat argument | +| params_flow.rb:80:48:80:49 | 36 | type tracker without call steps with content element 4 | params_flow.rb:81:1:81:37 | synthetic splat argument | | params_flow.rb:81:1:81:37 | call to splatmid | type tracker without call steps | params_flow.rb:81:1:81:37 | call to splatmid | | params_flow.rb:81:1:81:37 | synthetic splat argument | type tracker with call steps | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:81:1:81:37 | synthetic splat argument | type tracker without call steps | params_flow.rb:81:1:81:37 | synthetic splat argument | | params_flow.rb:81:10:81:18 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:81:10:81:18 | call to taint | type tracker with call steps | params_flow.rb:69:14:69:14 | x | -| params_flow.rb:81:10:81:18 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:81:10:81:18 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:81:10:81:18 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:69:1:76:3 | synthetic splat parameter | -| params_flow.rb:81:10:81:18 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:70:5:70:10 | synthetic splat argument | +| params_flow.rb:81:10:81:18 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:81:10:81:18 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:81:10:81:18 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:70:5:70:10 | synthetic splat argument | | params_flow.rb:81:10:81:18 | call to taint | type tracker without call steps | params_flow.rb:81:10:81:18 | call to taint | -| params_flow.rb:81:10:81:18 | call to taint | type tracker without call steps with content splat position 0 | params_flow.rb:81:1:81:37 | synthetic splat argument | -| params_flow.rb:81:10:81:18 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:81:10:81:18 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:81:1:81:37 | synthetic splat argument | | params_flow.rb:81:10:81:18 | synthetic splat argument | type tracker without call steps | params_flow.rb:81:10:81:18 | synthetic splat argument | | params_flow.rb:81:16:81:17 | 32 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:81:16:81:17 | 32 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:81:16:81:17 | 32 | type tracker with call steps | params_flow.rb:69:14:69:14 | x | -| params_flow.rb:81:16:81:17 | 32 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:81:16:81:17 | 32 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:81:16:81:17 | 32 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:81:16:81:17 | 32 | type tracker with call steps with content splat position 0 | params_flow.rb:69:1:76:3 | synthetic splat parameter | -| params_flow.rb:81:16:81:17 | 32 | type tracker with call steps with content splat position 0 | params_flow.rb:70:5:70:10 | synthetic splat argument | +| params_flow.rb:81:16:81:17 | 32 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:81:16:81:17 | 32 | type tracker with call steps with content element 0 | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:81:16:81:17 | 32 | type tracker with call steps with content element 0 | params_flow.rb:70:5:70:10 | synthetic splat argument | | params_flow.rb:81:16:81:17 | 32 | type tracker without call steps | params_flow.rb:81:10:81:18 | call to taint | | params_flow.rb:81:16:81:17 | 32 | type tracker without call steps | params_flow.rb:81:16:81:17 | 32 | -| params_flow.rb:81:16:81:17 | 32 | type tracker without call steps with content splat position 0 | params_flow.rb:81:1:81:37 | synthetic splat argument | -| params_flow.rb:81:16:81:17 | 32 | type tracker without call steps with content splat position 0 | params_flow.rb:81:10:81:18 | synthetic splat argument | +| params_flow.rb:81:16:81:17 | 32 | type tracker without call steps with content element 0 | params_flow.rb:81:1:81:37 | synthetic splat argument | +| params_flow.rb:81:16:81:17 | 32 | type tracker without call steps with content element 0 | params_flow.rb:81:10:81:18 | synthetic splat argument | | params_flow.rb:81:21:81:25 | * ... | type tracker without call steps | params_flow.rb:81:21:81:25 | * ... | | params_flow.rb:81:28:81:36 | call to taint | type tracker without call steps | params_flow.rb:81:28:81:36 | call to taint | -| params_flow.rb:81:28:81:36 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:81:28:81:36 | synthetic splat argument | type tracker without call steps | params_flow.rb:81:28:81:36 | synthetic splat argument | | params_flow.rb:81:34:81:35 | 37 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | -| params_flow.rb:81:34:81:35 | 37 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:81:34:81:35 | 37 | type tracker without call steps | params_flow.rb:81:28:81:36 | call to taint | | params_flow.rb:81:34:81:35 | 37 | type tracker without call steps | params_flow.rb:81:34:81:35 | 37 | -| params_flow.rb:81:34:81:35 | 37 | type tracker without call steps with content splat position 0 | params_flow.rb:81:28:81:36 | synthetic splat argument | +| params_flow.rb:81:34:81:35 | 37 | type tracker without call steps with content element 0 | params_flow.rb:81:28:81:36 | synthetic splat argument | | params_flow.rb:83:1:91:3 | &block | type tracker without call steps | params_flow.rb:83:1:91:3 | &block | | params_flow.rb:83:1:91:3 | pos_many | type tracker without call steps | params_flow.rb:83:1:91:3 | pos_many | | params_flow.rb:83:1:91:3 | self in pos_many | type tracker with call steps | params_flow.rb:5:1:7:3 | self in sink | | params_flow.rb:83:1:91:3 | self in pos_many | type tracker without call steps | params_flow.rb:83:1:91:3 | self in pos_many | | params_flow.rb:83:1:91:3 | synthetic splat parameter | type tracker without call steps | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:83:14:83:14 | t | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:83:14:83:14 | t | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:83:14:83:14 | t | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:83:14:83:14 | t | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:83:14:83:14 | t | type tracker without call steps | params_flow.rb:83:14:83:14 | t | | params_flow.rb:83:14:83:14 | t | type tracker without call steps | params_flow.rb:83:14:83:14 | t | -| params_flow.rb:83:14:83:14 | t | type tracker without call steps with content splat position 0 | params_flow.rb:84:5:84:10 | synthetic splat argument | +| params_flow.rb:83:14:83:14 | t | type tracker without call steps with content element 0 | params_flow.rb:84:5:84:10 | synthetic splat argument | | params_flow.rb:83:17:83:17 | u | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:83:17:83:17 | u | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:83:17:83:17 | u | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:83:17:83:17 | u | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:83:17:83:17 | u | type tracker without call steps | params_flow.rb:83:17:83:17 | u | | params_flow.rb:83:17:83:17 | u | type tracker without call steps | params_flow.rb:83:17:83:17 | u | -| params_flow.rb:83:17:83:17 | u | type tracker without call steps with content splat position 0 | params_flow.rb:85:5:85:10 | synthetic splat argument | +| params_flow.rb:83:17:83:17 | u | type tracker without call steps with content element 0 | params_flow.rb:85:5:85:10 | synthetic splat argument | | params_flow.rb:83:20:83:20 | v | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:83:20:83:20 | v | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:83:20:83:20 | v | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:83:20:83:20 | v | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:83:20:83:20 | v | type tracker without call steps | params_flow.rb:83:20:83:20 | v | | params_flow.rb:83:20:83:20 | v | type tracker without call steps | params_flow.rb:83:20:83:20 | v | -| params_flow.rb:83:20:83:20 | v | type tracker without call steps with content splat position 0 | params_flow.rb:86:5:86:10 | synthetic splat argument | +| params_flow.rb:83:20:83:20 | v | type tracker without call steps with content element 0 | params_flow.rb:86:5:86:10 | synthetic splat argument | | params_flow.rb:83:23:83:23 | w | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:83:23:83:23 | w | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:83:23:83:23 | w | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:83:23:83:23 | w | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:83:23:83:23 | w | type tracker without call steps | params_flow.rb:83:23:83:23 | w | | params_flow.rb:83:23:83:23 | w | type tracker without call steps | params_flow.rb:83:23:83:23 | w | -| params_flow.rb:83:23:83:23 | w | type tracker without call steps with content splat position 0 | params_flow.rb:87:5:87:10 | synthetic splat argument | +| params_flow.rb:83:23:83:23 | w | type tracker without call steps with content element 0 | params_flow.rb:87:5:87:10 | synthetic splat argument | | params_flow.rb:83:26:83:26 | x | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:83:26:83:26 | x | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:83:26:83:26 | x | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:83:26:83:26 | x | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:83:26:83:26 | x | type tracker without call steps | params_flow.rb:83:26:83:26 | x | | params_flow.rb:83:26:83:26 | x | type tracker without call steps | params_flow.rb:83:26:83:26 | x | -| params_flow.rb:83:26:83:26 | x | type tracker without call steps with content splat position 0 | params_flow.rb:88:5:88:10 | synthetic splat argument | +| params_flow.rb:83:26:83:26 | x | type tracker without call steps with content element 0 | params_flow.rb:88:5:88:10 | synthetic splat argument | | params_flow.rb:83:29:83:29 | y | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:83:29:83:29 | y | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:83:29:83:29 | y | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:83:29:83:29 | y | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:83:29:83:29 | y | type tracker without call steps | params_flow.rb:83:29:83:29 | y | | params_flow.rb:83:29:83:29 | y | type tracker without call steps | params_flow.rb:83:29:83:29 | y | -| params_flow.rb:83:29:83:29 | y | type tracker without call steps with content splat position 0 | params_flow.rb:89:5:89:10 | synthetic splat argument | +| params_flow.rb:83:29:83:29 | y | type tracker without call steps with content element 0 | params_flow.rb:89:5:89:10 | synthetic splat argument | | params_flow.rb:83:32:83:32 | z | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:83:32:83:32 | z | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:83:32:83:32 | z | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:83:32:83:32 | z | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:83:32:83:32 | z | type tracker without call steps | params_flow.rb:83:32:83:32 | z | | params_flow.rb:83:32:83:32 | z | type tracker without call steps | params_flow.rb:83:32:83:32 | z | -| params_flow.rb:83:32:83:32 | z | type tracker without call steps with content splat position 0 | params_flow.rb:90:5:90:10 | synthetic splat argument | +| params_flow.rb:83:32:83:32 | z | type tracker without call steps with content element 0 | params_flow.rb:90:5:90:10 | synthetic splat argument | | params_flow.rb:84:5:84:10 | call to sink | type tracker without call steps | params_flow.rb:84:5:84:10 | call to sink | -| params_flow.rb:84:5:84:10 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:84:5:84:10 | synthetic splat argument | type tracker without call steps | params_flow.rb:84:5:84:10 | synthetic splat argument | | params_flow.rb:85:5:85:10 | call to sink | type tracker without call steps | params_flow.rb:85:5:85:10 | call to sink | -| params_flow.rb:85:5:85:10 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:85:5:85:10 | synthetic splat argument | type tracker without call steps | params_flow.rb:85:5:85:10 | synthetic splat argument | | params_flow.rb:86:5:86:10 | call to sink | type tracker without call steps | params_flow.rb:86:5:86:10 | call to sink | -| params_flow.rb:86:5:86:10 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:86:5:86:10 | synthetic splat argument | type tracker without call steps | params_flow.rb:86:5:86:10 | synthetic splat argument | | params_flow.rb:87:5:87:10 | call to sink | type tracker without call steps | params_flow.rb:87:5:87:10 | call to sink | -| params_flow.rb:87:5:87:10 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:87:5:87:10 | synthetic splat argument | type tracker without call steps | params_flow.rb:87:5:87:10 | synthetic splat argument | | params_flow.rb:88:5:88:10 | call to sink | type tracker without call steps | params_flow.rb:88:5:88:10 | call to sink | -| params_flow.rb:88:5:88:10 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:88:5:88:10 | synthetic splat argument | type tracker without call steps | params_flow.rb:88:5:88:10 | synthetic splat argument | | params_flow.rb:89:5:89:10 | call to sink | type tracker without call steps | params_flow.rb:89:5:89:10 | call to sink | -| params_flow.rb:89:5:89:10 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:89:5:89:10 | synthetic splat argument | type tracker without call steps | params_flow.rb:89:5:89:10 | synthetic splat argument | | params_flow.rb:90:5:90:10 | call to sink | type tracker without call steps | params_flow.rb:90:5:90:10 | call to sink | | params_flow.rb:90:5:90:10 | call to sink | type tracker without call steps | params_flow.rb:94:1:94:48 | call to pos_many | | params_flow.rb:90:5:90:10 | call to sink | type tracker without call steps | params_flow.rb:131:1:131:46 | call to pos_many | -| params_flow.rb:90:5:90:10 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:90:5:90:10 | synthetic splat argument | type tracker without call steps | params_flow.rb:90:5:90:10 | synthetic splat argument | | params_flow.rb:93:1:93:4 | args | type tracker without call steps | params_flow.rb:93:1:93:4 | args | | params_flow.rb:93:8:93:51 | Array | type tracker without call steps | params_flow.rb:93:8:93:51 | Array | | params_flow.rb:93:8:93:51 | call to [] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:93:8:93:51 | call to [] | type tracker with call steps | params_flow.rb:83:20:83:20 | v | -| params_flow.rb:93:8:93:51 | call to [] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:93:8:93:51 | call to [] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:93:8:93:51 | call to [] | type tracker with call steps with content splat position 0 | params_flow.rb:86:5:86:10 | synthetic splat argument | -| params_flow.rb:93:8:93:51 | call to [] | type tracker with call steps with content splat position 2 (shifted) | params_flow.rb:83:1:91:3 | synthetic splat parameter | +| params_flow.rb:93:8:93:51 | call to [] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:93:8:93:51 | call to [] | type tracker with call steps with content element 0 | params_flow.rb:86:5:86:10 | synthetic splat argument | +| params_flow.rb:93:8:93:51 | call to [] | type tracker with call steps with content element 2 | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:93:8:93:51 | call to [] | type tracker without call steps | params_flow.rb:93:8:93:51 | call to [] | | params_flow.rb:93:8:93:51 | call to [] | type tracker without call steps with content element 0 or unknown | params_flow.rb:94:32:94:36 | * ... | -| params_flow.rb:93:8:93:51 | call to [] | type tracker without call steps with content splat position 2 (shifted) | params_flow.rb:94:1:94:48 | synthetic splat argument | +| params_flow.rb:93:8:93:51 | call to [] | type tracker without call steps with content element 2 | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:93:8:93:51 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:93:8:93:51 | synthetic splat argument | type tracker with call steps | params_flow.rb:83:20:83:20 | v | -| params_flow.rb:93:8:93:51 | synthetic splat argument | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:93:8:93:51 | synthetic splat argument | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:93:8:93:51 | synthetic splat argument | type tracker with call steps with content splat position 0 | params_flow.rb:86:5:86:10 | synthetic splat argument | -| params_flow.rb:93:8:93:51 | synthetic splat argument | type tracker with call steps with content splat position 2 (shifted) | params_flow.rb:83:1:91:3 | synthetic splat parameter | +| params_flow.rb:93:8:93:51 | synthetic splat argument | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:93:8:93:51 | synthetic splat argument | type tracker with call steps with content element 0 | params_flow.rb:86:5:86:10 | synthetic splat argument | +| params_flow.rb:93:8:93:51 | synthetic splat argument | type tracker with call steps with content element 2 | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:93:8:93:51 | synthetic splat argument | type tracker without call steps | params_flow.rb:93:8:93:51 | call to [] | | params_flow.rb:93:8:93:51 | synthetic splat argument | type tracker without call steps | params_flow.rb:93:8:93:51 | synthetic splat argument | | params_flow.rb:93:8:93:51 | synthetic splat argument | type tracker without call steps with content element 0 or unknown | params_flow.rb:94:32:94:36 | * ... | -| params_flow.rb:93:8:93:51 | synthetic splat argument | type tracker without call steps with content splat position 2 (shifted) | params_flow.rb:94:1:94:48 | synthetic splat argument | +| params_flow.rb:93:8:93:51 | synthetic splat argument | type tracker without call steps with content element 2 | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:93:9:93:17 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:93:9:93:17 | call to taint | type tracker with call steps | params_flow.rb:83:20:83:20 | v | -| params_flow.rb:93:9:93:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:93:9:93:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:93:9:93:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:86:5:86:10 | synthetic splat argument | -| params_flow.rb:93:9:93:17 | call to taint | type tracker with call steps with content splat position 2 (shifted) | params_flow.rb:83:1:91:3 | synthetic splat parameter | +| params_flow.rb:93:9:93:17 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:93:9:93:17 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:86:5:86:10 | synthetic splat argument | +| params_flow.rb:93:9:93:17 | call to taint | type tracker with call steps with content element 2 | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:93:9:93:17 | call to taint | type tracker without call steps | params_flow.rb:93:9:93:17 | call to taint | | params_flow.rb:93:9:93:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:93:8:93:51 | call to [] | | params_flow.rb:93:9:93:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:93:8:93:51 | synthetic splat argument | | params_flow.rb:93:9:93:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:94:32:94:36 | * ... | -| params_flow.rb:93:9:93:17 | call to taint | type tracker without call steps with content splat position 2 (shifted) | params_flow.rb:94:1:94:48 | synthetic splat argument | -| params_flow.rb:93:9:93:17 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:93:9:93:17 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:93:9:93:17 | synthetic splat argument | type tracker without call steps | params_flow.rb:93:9:93:17 | synthetic splat argument | | params_flow.rb:93:15:93:16 | 40 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:93:15:93:16 | 40 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:93:15:93:16 | 40 | type tracker with call steps | params_flow.rb:83:20:83:20 | v | -| params_flow.rb:93:15:93:16 | 40 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:93:15:93:16 | 40 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:93:15:93:16 | 40 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:93:15:93:16 | 40 | type tracker with call steps with content splat position 0 | params_flow.rb:86:5:86:10 | synthetic splat argument | -| params_flow.rb:93:15:93:16 | 40 | type tracker with call steps with content splat position 2 (shifted) | params_flow.rb:83:1:91:3 | synthetic splat parameter | +| params_flow.rb:93:15:93:16 | 40 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:93:15:93:16 | 40 | type tracker with call steps with content element 0 | params_flow.rb:86:5:86:10 | synthetic splat argument | +| params_flow.rb:93:15:93:16 | 40 | type tracker with call steps with content element 2 | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:93:15:93:16 | 40 | type tracker without call steps | params_flow.rb:93:9:93:17 | call to taint | | params_flow.rb:93:15:93:16 | 40 | type tracker without call steps | params_flow.rb:93:15:93:16 | 40 | | params_flow.rb:93:15:93:16 | 40 | type tracker without call steps with content element 0 | params_flow.rb:93:8:93:51 | call to [] | | params_flow.rb:93:15:93:16 | 40 | type tracker without call steps with content element 0 | params_flow.rb:93:8:93:51 | synthetic splat argument | +| params_flow.rb:93:15:93:16 | 40 | type tracker without call steps with content element 0 | params_flow.rb:93:9:93:17 | synthetic splat argument | | params_flow.rb:93:15:93:16 | 40 | type tracker without call steps with content element 0 | params_flow.rb:94:32:94:36 | * ... | -| params_flow.rb:93:15:93:16 | 40 | type tracker without call steps with content splat position 0 | params_flow.rb:93:9:93:17 | synthetic splat argument | -| params_flow.rb:93:15:93:16 | 40 | type tracker without call steps with content splat position 2 (shifted) | params_flow.rb:94:1:94:48 | synthetic splat argument | +| params_flow.rb:93:15:93:16 | 40 | type tracker without call steps with content element 2 | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:93:20:93:28 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:93:20:93:28 | call to taint | type tracker with call steps | params_flow.rb:83:23:83:23 | w | -| params_flow.rb:93:20:93:28 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:93:20:93:28 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:93:20:93:28 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:87:5:87:10 | synthetic splat argument | -| params_flow.rb:93:20:93:28 | call to taint | type tracker with call steps with content splat position 3 (shifted) | params_flow.rb:83:1:91:3 | synthetic splat parameter | +| params_flow.rb:93:20:93:28 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:93:20:93:28 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:87:5:87:10 | synthetic splat argument | +| params_flow.rb:93:20:93:28 | call to taint | type tracker with call steps with content element 3 | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:93:20:93:28 | call to taint | type tracker without call steps | params_flow.rb:93:20:93:28 | call to taint | | params_flow.rb:93:20:93:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:93:8:93:51 | call to [] | | params_flow.rb:93:20:93:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:93:8:93:51 | synthetic splat argument | | params_flow.rb:93:20:93:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:94:32:94:36 | * ... | -| params_flow.rb:93:20:93:28 | call to taint | type tracker without call steps with content splat position 3 (shifted) | params_flow.rb:94:1:94:48 | synthetic splat argument | -| params_flow.rb:93:20:93:28 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:93:20:93:28 | call to taint | type tracker without call steps with content element 3 | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:93:20:93:28 | synthetic splat argument | type tracker without call steps | params_flow.rb:93:20:93:28 | synthetic splat argument | | params_flow.rb:93:26:93:27 | 41 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:93:26:93:27 | 41 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:93:26:93:27 | 41 | type tracker with call steps | params_flow.rb:83:23:83:23 | w | -| params_flow.rb:93:26:93:27 | 41 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:93:26:93:27 | 41 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:93:26:93:27 | 41 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:93:26:93:27 | 41 | type tracker with call steps with content splat position 0 | params_flow.rb:87:5:87:10 | synthetic splat argument | -| params_flow.rb:93:26:93:27 | 41 | type tracker with call steps with content splat position 3 (shifted) | params_flow.rb:83:1:91:3 | synthetic splat parameter | +| params_flow.rb:93:26:93:27 | 41 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:93:26:93:27 | 41 | type tracker with call steps with content element 0 | params_flow.rb:87:5:87:10 | synthetic splat argument | +| params_flow.rb:93:26:93:27 | 41 | type tracker with call steps with content element 3 | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:93:26:93:27 | 41 | type tracker without call steps | params_flow.rb:93:20:93:28 | call to taint | | params_flow.rb:93:26:93:27 | 41 | type tracker without call steps | params_flow.rb:93:26:93:27 | 41 | +| params_flow.rb:93:26:93:27 | 41 | type tracker without call steps with content element 0 | params_flow.rb:93:20:93:28 | synthetic splat argument | | params_flow.rb:93:26:93:27 | 41 | type tracker without call steps with content element 1 | params_flow.rb:93:8:93:51 | call to [] | | params_flow.rb:93:26:93:27 | 41 | type tracker without call steps with content element 1 | params_flow.rb:93:8:93:51 | synthetic splat argument | | params_flow.rb:93:26:93:27 | 41 | type tracker without call steps with content element 1 | params_flow.rb:94:32:94:36 | * ... | -| params_flow.rb:93:26:93:27 | 41 | type tracker without call steps with content splat position 0 | params_flow.rb:93:20:93:28 | synthetic splat argument | -| params_flow.rb:93:26:93:27 | 41 | type tracker without call steps with content splat position 3 (shifted) | params_flow.rb:94:1:94:48 | synthetic splat argument | +| params_flow.rb:93:26:93:27 | 41 | type tracker without call steps with content element 3 | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:93:31:93:39 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:93:31:93:39 | call to taint | type tracker with call steps | params_flow.rb:83:26:83:26 | x | -| params_flow.rb:93:31:93:39 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:93:31:93:39 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:93:31:93:39 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:88:5:88:10 | synthetic splat argument | -| params_flow.rb:93:31:93:39 | call to taint | type tracker with call steps with content splat position 4 (shifted) | params_flow.rb:83:1:91:3 | synthetic splat parameter | +| params_flow.rb:93:31:93:39 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:93:31:93:39 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:88:5:88:10 | synthetic splat argument | +| params_flow.rb:93:31:93:39 | call to taint | type tracker with call steps with content element 4 | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:93:31:93:39 | call to taint | type tracker without call steps | params_flow.rb:93:31:93:39 | call to taint | | params_flow.rb:93:31:93:39 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:93:8:93:51 | call to [] | | params_flow.rb:93:31:93:39 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:93:8:93:51 | synthetic splat argument | | params_flow.rb:93:31:93:39 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:94:32:94:36 | * ... | -| params_flow.rb:93:31:93:39 | call to taint | type tracker without call steps with content splat position 4 (shifted) | params_flow.rb:94:1:94:48 | synthetic splat argument | -| params_flow.rb:93:31:93:39 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:93:31:93:39 | call to taint | type tracker without call steps with content element 4 | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:93:31:93:39 | synthetic splat argument | type tracker without call steps | params_flow.rb:93:31:93:39 | synthetic splat argument | | params_flow.rb:93:37:93:38 | 42 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:93:37:93:38 | 42 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:93:37:93:38 | 42 | type tracker with call steps | params_flow.rb:83:26:83:26 | x | -| params_flow.rb:93:37:93:38 | 42 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:93:37:93:38 | 42 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:93:37:93:38 | 42 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:93:37:93:38 | 42 | type tracker with call steps with content splat position 0 | params_flow.rb:88:5:88:10 | synthetic splat argument | -| params_flow.rb:93:37:93:38 | 42 | type tracker with call steps with content splat position 4 (shifted) | params_flow.rb:83:1:91:3 | synthetic splat parameter | +| params_flow.rb:93:37:93:38 | 42 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:93:37:93:38 | 42 | type tracker with call steps with content element 0 | params_flow.rb:88:5:88:10 | synthetic splat argument | +| params_flow.rb:93:37:93:38 | 42 | type tracker with call steps with content element 4 | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:93:37:93:38 | 42 | type tracker without call steps | params_flow.rb:93:31:93:39 | call to taint | | params_flow.rb:93:37:93:38 | 42 | type tracker without call steps | params_flow.rb:93:37:93:38 | 42 | +| params_flow.rb:93:37:93:38 | 42 | type tracker without call steps with content element 0 | params_flow.rb:93:31:93:39 | synthetic splat argument | | params_flow.rb:93:37:93:38 | 42 | type tracker without call steps with content element 2 | params_flow.rb:93:8:93:51 | call to [] | | params_flow.rb:93:37:93:38 | 42 | type tracker without call steps with content element 2 | params_flow.rb:93:8:93:51 | synthetic splat argument | | params_flow.rb:93:37:93:38 | 42 | type tracker without call steps with content element 2 | params_flow.rb:94:32:94:36 | * ... | -| params_flow.rb:93:37:93:38 | 42 | type tracker without call steps with content splat position 0 | params_flow.rb:93:31:93:39 | synthetic splat argument | -| params_flow.rb:93:37:93:38 | 42 | type tracker without call steps with content splat position 4 (shifted) | params_flow.rb:94:1:94:48 | synthetic splat argument | +| params_flow.rb:93:37:93:38 | 42 | type tracker without call steps with content element 4 | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:93:42:93:50 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:93:42:93:50 | call to taint | type tracker with call steps | params_flow.rb:83:29:83:29 | y | -| params_flow.rb:93:42:93:50 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:93:42:93:50 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:93:42:93:50 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:89:5:89:10 | synthetic splat argument | -| params_flow.rb:93:42:93:50 | call to taint | type tracker with call steps with content splat position 5 (shifted) | params_flow.rb:83:1:91:3 | synthetic splat parameter | +| params_flow.rb:93:42:93:50 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:93:42:93:50 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:89:5:89:10 | synthetic splat argument | +| params_flow.rb:93:42:93:50 | call to taint | type tracker with call steps with content element 5 | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:93:42:93:50 | call to taint | type tracker without call steps | params_flow.rb:93:42:93:50 | call to taint | | params_flow.rb:93:42:93:50 | call to taint | type tracker without call steps with content element 3 | params_flow.rb:93:8:93:51 | call to [] | | params_flow.rb:93:42:93:50 | call to taint | type tracker without call steps with content element 3 | params_flow.rb:93:8:93:51 | synthetic splat argument | | params_flow.rb:93:42:93:50 | call to taint | type tracker without call steps with content element 3 | params_flow.rb:94:32:94:36 | * ... | -| params_flow.rb:93:42:93:50 | call to taint | type tracker without call steps with content splat position 5 (shifted) | params_flow.rb:94:1:94:48 | synthetic splat argument | -| params_flow.rb:93:42:93:50 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:93:42:93:50 | call to taint | type tracker without call steps with content element 5 | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:93:42:93:50 | synthetic splat argument | type tracker without call steps | params_flow.rb:93:42:93:50 | synthetic splat argument | | params_flow.rb:93:48:93:49 | 43 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:93:48:93:49 | 43 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:93:48:93:49 | 43 | type tracker with call steps | params_flow.rb:83:29:83:29 | y | -| params_flow.rb:93:48:93:49 | 43 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:93:48:93:49 | 43 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:93:48:93:49 | 43 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:93:48:93:49 | 43 | type tracker with call steps with content splat position 0 | params_flow.rb:89:5:89:10 | synthetic splat argument | -| params_flow.rb:93:48:93:49 | 43 | type tracker with call steps with content splat position 5 (shifted) | params_flow.rb:83:1:91:3 | synthetic splat parameter | +| params_flow.rb:93:48:93:49 | 43 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:93:48:93:49 | 43 | type tracker with call steps with content element 0 | params_flow.rb:89:5:89:10 | synthetic splat argument | +| params_flow.rb:93:48:93:49 | 43 | type tracker with call steps with content element 5 | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:93:48:93:49 | 43 | type tracker without call steps | params_flow.rb:93:42:93:50 | call to taint | | params_flow.rb:93:48:93:49 | 43 | type tracker without call steps | params_flow.rb:93:48:93:49 | 43 | +| params_flow.rb:93:48:93:49 | 43 | type tracker without call steps with content element 0 | params_flow.rb:93:42:93:50 | synthetic splat argument | | params_flow.rb:93:48:93:49 | 43 | type tracker without call steps with content element 3 | params_flow.rb:93:8:93:51 | call to [] | | params_flow.rb:93:48:93:49 | 43 | type tracker without call steps with content element 3 | params_flow.rb:93:8:93:51 | synthetic splat argument | | params_flow.rb:93:48:93:49 | 43 | type tracker without call steps with content element 3 | params_flow.rb:94:32:94:36 | * ... | -| params_flow.rb:93:48:93:49 | 43 | type tracker without call steps with content splat position 0 | params_flow.rb:93:42:93:50 | synthetic splat argument | -| params_flow.rb:93:48:93:49 | 43 | type tracker without call steps with content splat position 5 (shifted) | params_flow.rb:94:1:94:48 | synthetic splat argument | +| params_flow.rb:93:48:93:49 | 43 | type tracker without call steps with content element 5 | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:94:1:94:48 | call to pos_many | type tracker without call steps | params_flow.rb:94:1:94:48 | call to pos_many | | params_flow.rb:94:1:94:48 | synthetic splat argument | type tracker with call steps | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:94:1:94:48 | synthetic splat argument | type tracker without call steps | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:94:10:94:18 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:94:10:94:18 | call to taint | type tracker with call steps | params_flow.rb:83:14:83:14 | t | -| params_flow.rb:94:10:94:18 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:94:10:94:18 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:94:10:94:18 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:83:1:91:3 | synthetic splat parameter | -| params_flow.rb:94:10:94:18 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:84:5:84:10 | synthetic splat argument | +| params_flow.rb:94:10:94:18 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:94:10:94:18 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:83:1:91:3 | synthetic splat parameter | +| params_flow.rb:94:10:94:18 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:84:5:84:10 | synthetic splat argument | | params_flow.rb:94:10:94:18 | call to taint | type tracker without call steps | params_flow.rb:94:10:94:18 | call to taint | -| params_flow.rb:94:10:94:18 | call to taint | type tracker without call steps with content splat position 0 | params_flow.rb:94:1:94:48 | synthetic splat argument | -| params_flow.rb:94:10:94:18 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:94:10:94:18 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:94:10:94:18 | synthetic splat argument | type tracker without call steps | params_flow.rb:94:10:94:18 | synthetic splat argument | | params_flow.rb:94:16:94:17 | 38 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:94:16:94:17 | 38 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:94:16:94:17 | 38 | type tracker with call steps | params_flow.rb:83:14:83:14 | t | -| params_flow.rb:94:16:94:17 | 38 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:94:16:94:17 | 38 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:94:16:94:17 | 38 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:94:16:94:17 | 38 | type tracker with call steps with content splat position 0 | params_flow.rb:83:1:91:3 | synthetic splat parameter | -| params_flow.rb:94:16:94:17 | 38 | type tracker with call steps with content splat position 0 | params_flow.rb:84:5:84:10 | synthetic splat argument | +| params_flow.rb:94:16:94:17 | 38 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:94:16:94:17 | 38 | type tracker with call steps with content element 0 | params_flow.rb:83:1:91:3 | synthetic splat parameter | +| params_flow.rb:94:16:94:17 | 38 | type tracker with call steps with content element 0 | params_flow.rb:84:5:84:10 | synthetic splat argument | | params_flow.rb:94:16:94:17 | 38 | type tracker without call steps | params_flow.rb:94:10:94:18 | call to taint | | params_flow.rb:94:16:94:17 | 38 | type tracker without call steps | params_flow.rb:94:16:94:17 | 38 | -| params_flow.rb:94:16:94:17 | 38 | type tracker without call steps with content splat position 0 | params_flow.rb:94:1:94:48 | synthetic splat argument | -| params_flow.rb:94:16:94:17 | 38 | type tracker without call steps with content splat position 0 | params_flow.rb:94:10:94:18 | synthetic splat argument | +| params_flow.rb:94:16:94:17 | 38 | type tracker without call steps with content element 0 | params_flow.rb:94:1:94:48 | synthetic splat argument | +| params_flow.rb:94:16:94:17 | 38 | type tracker without call steps with content element 0 | params_flow.rb:94:10:94:18 | synthetic splat argument | | params_flow.rb:94:21:94:29 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:94:21:94:29 | call to taint | type tracker with call steps | params_flow.rb:83:17:83:17 | u | -| params_flow.rb:94:21:94:29 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:94:21:94:29 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:94:21:94:29 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:85:5:85:10 | synthetic splat argument | -| params_flow.rb:94:21:94:29 | call to taint | type tracker with call steps with content splat position 1 | params_flow.rb:83:1:91:3 | synthetic splat parameter | +| params_flow.rb:94:21:94:29 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:94:21:94:29 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:85:5:85:10 | synthetic splat argument | +| params_flow.rb:94:21:94:29 | call to taint | type tracker with call steps with content element 1 | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:94:21:94:29 | call to taint | type tracker without call steps | params_flow.rb:94:21:94:29 | call to taint | -| params_flow.rb:94:21:94:29 | call to taint | type tracker without call steps with content splat position 1 | params_flow.rb:94:1:94:48 | synthetic splat argument | -| params_flow.rb:94:21:94:29 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:94:21:94:29 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:94:21:94:29 | synthetic splat argument | type tracker without call steps | params_flow.rb:94:21:94:29 | synthetic splat argument | | params_flow.rb:94:27:94:28 | 39 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:94:27:94:28 | 39 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:94:27:94:28 | 39 | type tracker with call steps | params_flow.rb:83:17:83:17 | u | -| params_flow.rb:94:27:94:28 | 39 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:94:27:94:28 | 39 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:94:27:94:28 | 39 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:94:27:94:28 | 39 | type tracker with call steps with content splat position 0 | params_flow.rb:85:5:85:10 | synthetic splat argument | -| params_flow.rb:94:27:94:28 | 39 | type tracker with call steps with content splat position 1 | params_flow.rb:83:1:91:3 | synthetic splat parameter | +| params_flow.rb:94:27:94:28 | 39 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:94:27:94:28 | 39 | type tracker with call steps with content element 0 | params_flow.rb:85:5:85:10 | synthetic splat argument | +| params_flow.rb:94:27:94:28 | 39 | type tracker with call steps with content element 1 | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:94:27:94:28 | 39 | type tracker without call steps | params_flow.rb:94:21:94:29 | call to taint | | params_flow.rb:94:27:94:28 | 39 | type tracker without call steps | params_flow.rb:94:27:94:28 | 39 | -| params_flow.rb:94:27:94:28 | 39 | type tracker without call steps with content splat position 0 | params_flow.rb:94:21:94:29 | synthetic splat argument | -| params_flow.rb:94:27:94:28 | 39 | type tracker without call steps with content splat position 1 | params_flow.rb:94:1:94:48 | synthetic splat argument | +| params_flow.rb:94:27:94:28 | 39 | type tracker without call steps with content element 0 | params_flow.rb:94:21:94:29 | synthetic splat argument | +| params_flow.rb:94:27:94:28 | 39 | type tracker without call steps with content element 1 | params_flow.rb:94:1:94:48 | synthetic splat argument | | params_flow.rb:94:32:94:36 | * ... | type tracker without call steps | params_flow.rb:94:32:94:36 | * ... | -| params_flow.rb:94:39:94:47 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:94:39:94:47 | call to taint | type tracker with call steps | params_flow.rb:83:23:83:23 | w | -| params_flow.rb:94:39:94:47 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:94:39:94:47 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:94:39:94:47 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:87:5:87:10 | synthetic splat argument | | params_flow.rb:94:39:94:47 | call to taint | type tracker without call steps | params_flow.rb:94:39:94:47 | call to taint | -| params_flow.rb:94:39:94:47 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:94:39:94:47 | synthetic splat argument | type tracker without call steps | params_flow.rb:94:39:94:47 | synthetic splat argument | | params_flow.rb:94:45:94:46 | 44 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | -| params_flow.rb:94:45:94:46 | 44 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:94:45:94:46 | 44 | type tracker with call steps | params_flow.rb:83:23:83:23 | w | -| params_flow.rb:94:45:94:46 | 44 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:94:45:94:46 | 44 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:94:45:94:46 | 44 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:94:45:94:46 | 44 | type tracker with call steps with content splat position 0 | params_flow.rb:87:5:87:10 | synthetic splat argument | | params_flow.rb:94:45:94:46 | 44 | type tracker without call steps | params_flow.rb:94:39:94:47 | call to taint | | params_flow.rb:94:45:94:46 | 44 | type tracker without call steps | params_flow.rb:94:45:94:46 | 44 | -| params_flow.rb:94:45:94:46 | 44 | type tracker without call steps with content splat position 0 | params_flow.rb:94:39:94:47 | synthetic splat argument | +| params_flow.rb:94:45:94:46 | 44 | type tracker without call steps with content element 0 | params_flow.rb:94:39:94:47 | synthetic splat argument | | params_flow.rb:96:1:96:88 | call to splatmid | type tracker without call steps | params_flow.rb:96:1:96:88 | call to splatmid | -| params_flow.rb:96:1:96:88 | synthetic splat argument | type tracker with call steps | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:96:1:96:88 | synthetic splat argument | type tracker without call steps | params_flow.rb:96:1:96:88 | synthetic splat argument | | params_flow.rb:96:10:96:18 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:96:10:96:18 | call to taint | type tracker with call steps | params_flow.rb:69:14:69:14 | x | -| params_flow.rb:96:10:96:18 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:96:10:96:18 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:96:10:96:18 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:69:1:76:3 | synthetic splat parameter | -| params_flow.rb:96:10:96:18 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:70:5:70:10 | synthetic splat argument | +| params_flow.rb:96:10:96:18 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:96:10:96:18 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:70:5:70:10 | synthetic splat argument | | params_flow.rb:96:10:96:18 | call to taint | type tracker without call steps | params_flow.rb:96:10:96:18 | call to taint | -| params_flow.rb:96:10:96:18 | call to taint | type tracker without call steps with content splat position 0 | params_flow.rb:96:1:96:88 | synthetic splat argument | -| params_flow.rb:96:10:96:18 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:96:10:96:18 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:96:1:96:88 | synthetic splat argument | | params_flow.rb:96:10:96:18 | synthetic splat argument | type tracker without call steps | params_flow.rb:96:10:96:18 | synthetic splat argument | | params_flow.rb:96:16:96:17 | 45 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:96:16:96:17 | 45 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:96:16:96:17 | 45 | type tracker with call steps | params_flow.rb:69:14:69:14 | x | -| params_flow.rb:96:16:96:17 | 45 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:96:16:96:17 | 45 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:96:16:96:17 | 45 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:96:16:96:17 | 45 | type tracker with call steps with content splat position 0 | params_flow.rb:69:1:76:3 | synthetic splat parameter | -| params_flow.rb:96:16:96:17 | 45 | type tracker with call steps with content splat position 0 | params_flow.rb:70:5:70:10 | synthetic splat argument | +| params_flow.rb:96:16:96:17 | 45 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:96:16:96:17 | 45 | type tracker with call steps with content element 0 | params_flow.rb:70:5:70:10 | synthetic splat argument | | params_flow.rb:96:16:96:17 | 45 | type tracker without call steps | params_flow.rb:96:10:96:18 | call to taint | | params_flow.rb:96:16:96:17 | 45 | type tracker without call steps | params_flow.rb:96:16:96:17 | 45 | -| params_flow.rb:96:16:96:17 | 45 | type tracker without call steps with content splat position 0 | params_flow.rb:96:1:96:88 | synthetic splat argument | -| params_flow.rb:96:16:96:17 | 45 | type tracker without call steps with content splat position 0 | params_flow.rb:96:10:96:18 | synthetic splat argument | +| params_flow.rb:96:16:96:17 | 45 | type tracker without call steps with content element 0 | params_flow.rb:96:1:96:88 | synthetic splat argument | +| params_flow.rb:96:16:96:17 | 45 | type tracker without call steps with content element 0 | params_flow.rb:96:10:96:18 | synthetic splat argument | | params_flow.rb:96:21:96:29 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:96:21:96:29 | call to taint | type tracker with call steps | params_flow.rb:69:17:69:17 | y | -| params_flow.rb:96:21:96:29 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:96:21:96:29 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:96:21:96:29 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:71:5:71:10 | synthetic splat argument | -| params_flow.rb:96:21:96:29 | call to taint | type tracker with call steps with content splat position 1 | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:96:21:96:29 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:96:21:96:29 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:71:5:71:10 | synthetic splat argument | | params_flow.rb:96:21:96:29 | call to taint | type tracker without call steps | params_flow.rb:96:21:96:29 | call to taint | -| params_flow.rb:96:21:96:29 | call to taint | type tracker without call steps with content splat position 1 | params_flow.rb:96:1:96:88 | synthetic splat argument | -| params_flow.rb:96:21:96:29 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:96:21:96:29 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:96:1:96:88 | synthetic splat argument | | params_flow.rb:96:21:96:29 | synthetic splat argument | type tracker without call steps | params_flow.rb:96:21:96:29 | synthetic splat argument | | params_flow.rb:96:27:96:28 | 46 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:96:27:96:28 | 46 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:96:27:96:28 | 46 | type tracker with call steps | params_flow.rb:69:17:69:17 | y | -| params_flow.rb:96:27:96:28 | 46 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:96:27:96:28 | 46 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:96:27:96:28 | 46 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:96:27:96:28 | 46 | type tracker with call steps with content splat position 0 | params_flow.rb:71:5:71:10 | synthetic splat argument | -| params_flow.rb:96:27:96:28 | 46 | type tracker with call steps with content splat position 1 | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:96:27:96:28 | 46 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:96:27:96:28 | 46 | type tracker with call steps with content element 0 | params_flow.rb:71:5:71:10 | synthetic splat argument | | params_flow.rb:96:27:96:28 | 46 | type tracker without call steps | params_flow.rb:96:21:96:29 | call to taint | | params_flow.rb:96:27:96:28 | 46 | type tracker without call steps | params_flow.rb:96:27:96:28 | 46 | -| params_flow.rb:96:27:96:28 | 46 | type tracker without call steps with content splat position 0 | params_flow.rb:96:21:96:29 | synthetic splat argument | -| params_flow.rb:96:27:96:28 | 46 | type tracker without call steps with content splat position 1 | params_flow.rb:96:1:96:88 | synthetic splat argument | +| params_flow.rb:96:27:96:28 | 46 | type tracker without call steps with content element 0 | params_flow.rb:96:21:96:29 | synthetic splat argument | +| params_flow.rb:96:27:96:28 | 46 | type tracker without call steps with content element 1 | params_flow.rb:96:1:96:88 | synthetic splat argument | | params_flow.rb:96:32:96:65 | * ... | type tracker without call steps | params_flow.rb:96:32:96:65 | * ... | | params_flow.rb:96:33:96:65 | Array | type tracker without call steps | params_flow.rb:96:33:96:65 | Array | -| params_flow.rb:96:33:96:65 | call to [] | type tracker with call steps with content splat position 2 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:96:33:96:65 | call to [] | type tracker without call steps | params_flow.rb:96:33:96:65 | call to [] | | params_flow.rb:96:33:96:65 | call to [] | type tracker without call steps with content element 0 or unknown | params_flow.rb:96:32:96:65 | * ... | -| params_flow.rb:96:33:96:65 | call to [] | type tracker without call steps with content splat position 2 (shifted) | params_flow.rb:96:1:96:88 | synthetic splat argument | -| params_flow.rb:96:33:96:65 | synthetic splat argument | type tracker with call steps with content splat position 2 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:96:33:96:65 | call to [] | type tracker without call steps with content element 2 | params_flow.rb:96:1:96:88 | synthetic splat argument | | params_flow.rb:96:33:96:65 | synthetic splat argument | type tracker without call steps | params_flow.rb:96:33:96:65 | call to [] | | params_flow.rb:96:33:96:65 | synthetic splat argument | type tracker without call steps | params_flow.rb:96:33:96:65 | synthetic splat argument | | params_flow.rb:96:33:96:65 | synthetic splat argument | type tracker without call steps with content element 0 or unknown | params_flow.rb:96:32:96:65 | * ... | -| params_flow.rb:96:33:96:65 | synthetic splat argument | type tracker without call steps with content splat position 2 (shifted) | params_flow.rb:96:1:96:88 | synthetic splat argument | -| params_flow.rb:96:34:96:42 | call to taint | type tracker with call steps with content splat position 2 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:96:33:96:65 | synthetic splat argument | type tracker without call steps with content element 2 | params_flow.rb:96:1:96:88 | synthetic splat argument | | params_flow.rb:96:34:96:42 | call to taint | type tracker without call steps | params_flow.rb:96:34:96:42 | call to taint | | params_flow.rb:96:34:96:42 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:96:32:96:65 | * ... | | params_flow.rb:96:34:96:42 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:96:33:96:65 | call to [] | | params_flow.rb:96:34:96:42 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:96:33:96:65 | synthetic splat argument | -| params_flow.rb:96:34:96:42 | call to taint | type tracker without call steps with content splat position 2 (shifted) | params_flow.rb:96:1:96:88 | synthetic splat argument | -| params_flow.rb:96:34:96:42 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:96:34:96:42 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:96:1:96:88 | synthetic splat argument | | params_flow.rb:96:34:96:42 | synthetic splat argument | type tracker without call steps | params_flow.rb:96:34:96:42 | synthetic splat argument | | params_flow.rb:96:40:96:41 | 47 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | -| params_flow.rb:96:40:96:41 | 47 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:96:40:96:41 | 47 | type tracker with call steps with content splat position 2 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:96:40:96:41 | 47 | type tracker without call steps | params_flow.rb:96:34:96:42 | call to taint | | params_flow.rb:96:40:96:41 | 47 | type tracker without call steps | params_flow.rb:96:40:96:41 | 47 | | params_flow.rb:96:40:96:41 | 47 | type tracker without call steps with content element 0 | params_flow.rb:96:32:96:65 | * ... | | params_flow.rb:96:40:96:41 | 47 | type tracker without call steps with content element 0 | params_flow.rb:96:33:96:65 | call to [] | | params_flow.rb:96:40:96:41 | 47 | type tracker without call steps with content element 0 | params_flow.rb:96:33:96:65 | synthetic splat argument | -| params_flow.rb:96:40:96:41 | 47 | type tracker without call steps with content splat position 0 | params_flow.rb:96:34:96:42 | synthetic splat argument | -| params_flow.rb:96:40:96:41 | 47 | type tracker without call steps with content splat position 2 (shifted) | params_flow.rb:96:1:96:88 | synthetic splat argument | -| params_flow.rb:96:45:96:53 | call to taint | type tracker with call steps with content splat position 3 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:96:40:96:41 | 47 | type tracker without call steps with content element 0 | params_flow.rb:96:34:96:42 | synthetic splat argument | +| params_flow.rb:96:40:96:41 | 47 | type tracker without call steps with content element 2 | params_flow.rb:96:1:96:88 | synthetic splat argument | | params_flow.rb:96:45:96:53 | call to taint | type tracker without call steps | params_flow.rb:96:45:96:53 | call to taint | | params_flow.rb:96:45:96:53 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:96:32:96:65 | * ... | | params_flow.rb:96:45:96:53 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:96:33:96:65 | call to [] | | params_flow.rb:96:45:96:53 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:96:33:96:65 | synthetic splat argument | -| params_flow.rb:96:45:96:53 | call to taint | type tracker without call steps with content splat position 3 (shifted) | params_flow.rb:96:1:96:88 | synthetic splat argument | -| params_flow.rb:96:45:96:53 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:96:45:96:53 | call to taint | type tracker without call steps with content element 3 | params_flow.rb:96:1:96:88 | synthetic splat argument | | params_flow.rb:96:45:96:53 | synthetic splat argument | type tracker without call steps | params_flow.rb:96:45:96:53 | synthetic splat argument | | params_flow.rb:96:51:96:52 | 48 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | -| params_flow.rb:96:51:96:52 | 48 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:96:51:96:52 | 48 | type tracker with call steps with content splat position 3 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:96:51:96:52 | 48 | type tracker without call steps | params_flow.rb:96:45:96:53 | call to taint | | params_flow.rb:96:51:96:52 | 48 | type tracker without call steps | params_flow.rb:96:51:96:52 | 48 | +| params_flow.rb:96:51:96:52 | 48 | type tracker without call steps with content element 0 | params_flow.rb:96:45:96:53 | synthetic splat argument | | params_flow.rb:96:51:96:52 | 48 | type tracker without call steps with content element 1 | params_flow.rb:96:32:96:65 | * ... | | params_flow.rb:96:51:96:52 | 48 | type tracker without call steps with content element 1 | params_flow.rb:96:33:96:65 | call to [] | | params_flow.rb:96:51:96:52 | 48 | type tracker without call steps with content element 1 | params_flow.rb:96:33:96:65 | synthetic splat argument | -| params_flow.rb:96:51:96:52 | 48 | type tracker without call steps with content splat position 0 | params_flow.rb:96:45:96:53 | synthetic splat argument | -| params_flow.rb:96:51:96:52 | 48 | type tracker without call steps with content splat position 3 (shifted) | params_flow.rb:96:1:96:88 | synthetic splat argument | -| params_flow.rb:96:56:96:64 | call to taint | type tracker with call steps with content splat position 4 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | +| params_flow.rb:96:51:96:52 | 48 | type tracker without call steps with content element 3 | params_flow.rb:96:1:96:88 | synthetic splat argument | | params_flow.rb:96:56:96:64 | call to taint | type tracker without call steps | params_flow.rb:96:56:96:64 | call to taint | | params_flow.rb:96:56:96:64 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:96:32:96:65 | * ... | | params_flow.rb:96:56:96:64 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:96:33:96:65 | call to [] | | params_flow.rb:96:56:96:64 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:96:33:96:65 | synthetic splat argument | -| params_flow.rb:96:56:96:64 | call to taint | type tracker without call steps with content splat position 4 (shifted) | params_flow.rb:96:1:96:88 | synthetic splat argument | -| params_flow.rb:96:56:96:64 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:96:56:96:64 | call to taint | type tracker without call steps with content element 4 | params_flow.rb:96:1:96:88 | synthetic splat argument | | params_flow.rb:96:56:96:64 | synthetic splat argument | type tracker without call steps | params_flow.rb:96:56:96:64 | synthetic splat argument | | params_flow.rb:96:62:96:63 | 49 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | -| params_flow.rb:96:62:96:63 | 49 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:96:62:96:63 | 49 | type tracker with call steps with content splat position 4 (shifted) | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:96:62:96:63 | 49 | type tracker without call steps | params_flow.rb:96:56:96:64 | call to taint | | params_flow.rb:96:62:96:63 | 49 | type tracker without call steps | params_flow.rb:96:62:96:63 | 49 | +| params_flow.rb:96:62:96:63 | 49 | type tracker without call steps with content element 0 | params_flow.rb:96:56:96:64 | synthetic splat argument | | params_flow.rb:96:62:96:63 | 49 | type tracker without call steps with content element 2 | params_flow.rb:96:32:96:65 | * ... | | params_flow.rb:96:62:96:63 | 49 | type tracker without call steps with content element 2 | params_flow.rb:96:33:96:65 | call to [] | | params_flow.rb:96:62:96:63 | 49 | type tracker without call steps with content element 2 | params_flow.rb:96:33:96:65 | synthetic splat argument | -| params_flow.rb:96:62:96:63 | 49 | type tracker without call steps with content splat position 0 | params_flow.rb:96:56:96:64 | synthetic splat argument | -| params_flow.rb:96:62:96:63 | 49 | type tracker without call steps with content splat position 4 (shifted) | params_flow.rb:96:1:96:88 | synthetic splat argument | -| params_flow.rb:96:68:96:76 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:96:68:96:76 | call to taint | type tracker with call steps | params_flow.rb:69:24:69:24 | w | -| params_flow.rb:96:68:96:76 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:96:68:96:76 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:96:68:96:76 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:74:5:74:10 | synthetic splat argument | +| params_flow.rb:96:62:96:63 | 49 | type tracker without call steps with content element 4 | params_flow.rb:96:1:96:88 | synthetic splat argument | | params_flow.rb:96:68:96:76 | call to taint | type tracker without call steps | params_flow.rb:96:68:96:76 | call to taint | -| params_flow.rb:96:68:96:76 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:96:68:96:76 | synthetic splat argument | type tracker without call steps | params_flow.rb:96:68:96:76 | synthetic splat argument | | params_flow.rb:96:74:96:75 | 50 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | -| params_flow.rb:96:74:96:75 | 50 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:96:74:96:75 | 50 | type tracker with call steps | params_flow.rb:69:24:69:24 | w | -| params_flow.rb:96:74:96:75 | 50 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:96:74:96:75 | 50 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:96:74:96:75 | 50 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:96:74:96:75 | 50 | type tracker with call steps with content splat position 0 | params_flow.rb:74:5:74:10 | synthetic splat argument | | params_flow.rb:96:74:96:75 | 50 | type tracker without call steps | params_flow.rb:96:68:96:76 | call to taint | | params_flow.rb:96:74:96:75 | 50 | type tracker without call steps | params_flow.rb:96:74:96:75 | 50 | -| params_flow.rb:96:74:96:75 | 50 | type tracker without call steps with content splat position 0 | params_flow.rb:96:68:96:76 | synthetic splat argument | -| params_flow.rb:96:79:96:87 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:96:79:96:87 | call to taint | type tracker with call steps | params_flow.rb:69:27:69:27 | r | -| params_flow.rb:96:79:96:87 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:96:79:96:87 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:96:79:96:87 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:75:5:75:10 | synthetic splat argument | +| params_flow.rb:96:74:96:75 | 50 | type tracker without call steps with content element 0 | params_flow.rb:96:68:96:76 | synthetic splat argument | | params_flow.rb:96:79:96:87 | call to taint | type tracker without call steps | params_flow.rb:96:79:96:87 | call to taint | -| params_flow.rb:96:79:96:87 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:96:79:96:87 | synthetic splat argument | type tracker without call steps | params_flow.rb:96:79:96:87 | synthetic splat argument | | params_flow.rb:96:85:96:86 | 51 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | -| params_flow.rb:96:85:96:86 | 51 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:96:85:96:86 | 51 | type tracker with call steps | params_flow.rb:69:27:69:27 | r | -| params_flow.rb:96:85:96:86 | 51 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:96:85:96:86 | 51 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:96:85:96:86 | 51 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:96:85:96:86 | 51 | type tracker with call steps with content splat position 0 | params_flow.rb:75:5:75:10 | synthetic splat argument | | params_flow.rb:96:85:96:86 | 51 | type tracker without call steps | params_flow.rb:96:79:96:87 | call to taint | | params_flow.rb:96:85:96:86 | 51 | type tracker without call steps | params_flow.rb:96:85:96:86 | 51 | -| params_flow.rb:96:85:96:86 | 51 | type tracker without call steps with content splat position 0 | params_flow.rb:96:79:96:87 | synthetic splat argument | +| params_flow.rb:96:85:96:86 | 51 | type tracker without call steps with content element 0 | params_flow.rb:96:79:96:87 | synthetic splat argument | | params_flow.rb:98:1:103:3 | &block | type tracker without call steps | params_flow.rb:98:1:103:3 | &block | | params_flow.rb:98:1:103:3 | self in splatmidsmall | type tracker with call steps | params_flow.rb:5:1:7:3 | self in sink | | params_flow.rb:98:1:103:3 | self in splatmidsmall | type tracker without call steps | params_flow.rb:98:1:103:3 | self in splatmidsmall | | params_flow.rb:98:1:103:3 | splatmidsmall | type tracker without call steps | params_flow.rb:98:1:103:3 | splatmidsmall | | params_flow.rb:98:1:103:3 | synthetic splat parameter | type tracker without call steps | params_flow.rb:98:1:103:3 | synthetic splat parameter | | params_flow.rb:98:19:98:19 | a | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:98:19:98:19 | a | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:98:19:98:19 | a | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:98:19:98:19 | a | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:98:19:98:19 | a | type tracker without call steps | params_flow.rb:98:19:98:19 | a | | params_flow.rb:98:19:98:19 | a | type tracker without call steps | params_flow.rb:98:19:98:19 | a | -| params_flow.rb:98:19:98:19 | a | type tracker without call steps with content splat position 0 | params_flow.rb:99:5:99:10 | synthetic splat argument | +| params_flow.rb:98:19:98:19 | a | type tracker without call steps with content element 0 | params_flow.rb:99:5:99:10 | synthetic splat argument | | params_flow.rb:98:22:98:28 | *splats | type tracker without call steps | params_flow.rb:98:22:98:28 | *splats | | params_flow.rb:98:23:98:28 | splats | type tracker without call steps | params_flow.rb:98:23:98:28 | splats | | params_flow.rb:98:31:98:31 | b | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:98:31:98:31 | b | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:98:31:98:31 | b | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:98:31:98:31 | b | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:98:31:98:31 | b | type tracker without call steps | params_flow.rb:98:31:98:31 | b | | params_flow.rb:98:31:98:31 | b | type tracker without call steps | params_flow.rb:98:31:98:31 | b | -| params_flow.rb:98:31:98:31 | b | type tracker without call steps with content splat position 0 | params_flow.rb:102:5:102:10 | synthetic splat argument | +| params_flow.rb:98:31:98:31 | b | type tracker without call steps with content element 0 | params_flow.rb:102:5:102:10 | synthetic splat argument | | params_flow.rb:99:5:99:10 | call to sink | type tracker without call steps | params_flow.rb:99:5:99:10 | call to sink | -| params_flow.rb:99:5:99:10 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:99:5:99:10 | synthetic splat argument | type tracker without call steps | params_flow.rb:99:5:99:10 | synthetic splat argument | | params_flow.rb:100:5:100:18 | call to sink | type tracker without call steps | params_flow.rb:100:5:100:18 | call to sink | -| params_flow.rb:100:5:100:18 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:100:5:100:18 | synthetic splat argument | type tracker without call steps | params_flow.rb:100:5:100:18 | synthetic splat argument | | params_flow.rb:100:10:100:18 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:100:10:100:18 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:100:10:100:18 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:100:10:100:18 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:100:10:100:18 | ...[...] | type tracker without call steps | params_flow.rb:100:10:100:18 | ...[...] | -| params_flow.rb:100:10:100:18 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:100:5:100:18 | synthetic splat argument | +| params_flow.rb:100:10:100:18 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:100:5:100:18 | synthetic splat argument | | params_flow.rb:100:10:100:18 | synthetic splat argument | type tracker without call steps | params_flow.rb:100:10:100:18 | synthetic splat argument | | params_flow.rb:100:17:100:17 | 0 | type tracker without call steps | params_flow.rb:100:17:100:17 | 0 | -| params_flow.rb:100:17:100:17 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:100:10:100:18 | synthetic splat argument | +| params_flow.rb:100:17:100:17 | 0 | type tracker without call steps with content element 0 | params_flow.rb:100:10:100:18 | synthetic splat argument | | params_flow.rb:101:5:101:18 | call to sink | type tracker without call steps | params_flow.rb:101:5:101:18 | call to sink | -| params_flow.rb:101:5:101:18 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:101:5:101:18 | synthetic splat argument | type tracker without call steps | params_flow.rb:101:5:101:18 | synthetic splat argument | | params_flow.rb:101:10:101:18 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:101:10:101:18 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:101:10:101:18 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:101:10:101:18 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:101:10:101:18 | ...[...] | type tracker without call steps | params_flow.rb:101:10:101:18 | ...[...] | -| params_flow.rb:101:10:101:18 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:101:5:101:18 | synthetic splat argument | +| params_flow.rb:101:10:101:18 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:101:5:101:18 | synthetic splat argument | | params_flow.rb:101:10:101:18 | synthetic splat argument | type tracker without call steps | params_flow.rb:101:10:101:18 | synthetic splat argument | | params_flow.rb:101:17:101:17 | 1 | type tracker without call steps | params_flow.rb:101:17:101:17 | 1 | -| params_flow.rb:101:17:101:17 | 1 | type tracker without call steps with content splat position 0 | params_flow.rb:101:10:101:18 | synthetic splat argument | +| params_flow.rb:101:17:101:17 | 1 | type tracker without call steps with content element 0 | params_flow.rb:101:10:101:18 | synthetic splat argument | | params_flow.rb:102:5:102:10 | call to sink | type tracker without call steps | params_flow.rb:102:5:102:10 | call to sink | | params_flow.rb:102:5:102:10 | call to sink | type tracker without call steps | params_flow.rb:105:1:105:49 | call to splatmidsmall | | params_flow.rb:102:5:102:10 | call to sink | type tracker without call steps | params_flow.rb:106:1:106:46 | call to splatmidsmall | -| params_flow.rb:102:5:102:10 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:102:5:102:10 | synthetic splat argument | type tracker without call steps | params_flow.rb:102:5:102:10 | synthetic splat argument | | params_flow.rb:105:1:105:49 | call to splatmidsmall | type tracker without call steps | params_flow.rb:105:1:105:49 | call to splatmidsmall | -| params_flow.rb:105:1:105:49 | synthetic splat argument | type tracker with call steps | params_flow.rb:98:1:103:3 | synthetic splat parameter | | params_flow.rb:105:1:105:49 | synthetic splat argument | type tracker without call steps | params_flow.rb:105:1:105:49 | synthetic splat argument | | params_flow.rb:105:15:105:23 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:105:15:105:23 | call to taint | type tracker with call steps | params_flow.rb:98:19:98:19 | a | -| params_flow.rb:105:15:105:23 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:105:15:105:23 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:105:15:105:23 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:98:1:103:3 | synthetic splat parameter | -| params_flow.rb:105:15:105:23 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:99:5:99:10 | synthetic splat argument | +| params_flow.rb:105:15:105:23 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:105:15:105:23 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:99:5:99:10 | synthetic splat argument | | params_flow.rb:105:15:105:23 | call to taint | type tracker without call steps | params_flow.rb:105:15:105:23 | call to taint | -| params_flow.rb:105:15:105:23 | call to taint | type tracker without call steps with content splat position 0 | params_flow.rb:105:1:105:49 | synthetic splat argument | -| params_flow.rb:105:15:105:23 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:105:15:105:23 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:105:1:105:49 | synthetic splat argument | | params_flow.rb:105:15:105:23 | synthetic splat argument | type tracker without call steps | params_flow.rb:105:15:105:23 | synthetic splat argument | | params_flow.rb:105:21:105:22 | 52 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:105:21:105:22 | 52 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:105:21:105:22 | 52 | type tracker with call steps | params_flow.rb:98:19:98:19 | a | -| params_flow.rb:105:21:105:22 | 52 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:105:21:105:22 | 52 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:105:21:105:22 | 52 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:105:21:105:22 | 52 | type tracker with call steps with content splat position 0 | params_flow.rb:98:1:103:3 | synthetic splat parameter | -| params_flow.rb:105:21:105:22 | 52 | type tracker with call steps with content splat position 0 | params_flow.rb:99:5:99:10 | synthetic splat argument | +| params_flow.rb:105:21:105:22 | 52 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:105:21:105:22 | 52 | type tracker with call steps with content element 0 | params_flow.rb:99:5:99:10 | synthetic splat argument | | params_flow.rb:105:21:105:22 | 52 | type tracker without call steps | params_flow.rb:105:15:105:23 | call to taint | | params_flow.rb:105:21:105:22 | 52 | type tracker without call steps | params_flow.rb:105:21:105:22 | 52 | -| params_flow.rb:105:21:105:22 | 52 | type tracker without call steps with content splat position 0 | params_flow.rb:105:1:105:49 | synthetic splat argument | -| params_flow.rb:105:21:105:22 | 52 | type tracker without call steps with content splat position 0 | params_flow.rb:105:15:105:23 | synthetic splat argument | +| params_flow.rb:105:21:105:22 | 52 | type tracker without call steps with content element 0 | params_flow.rb:105:1:105:49 | synthetic splat argument | +| params_flow.rb:105:21:105:22 | 52 | type tracker without call steps with content element 0 | params_flow.rb:105:15:105:23 | synthetic splat argument | | params_flow.rb:105:26:105:48 | * ... | type tracker without call steps | params_flow.rb:105:26:105:48 | * ... | | params_flow.rb:105:27:105:48 | Array | type tracker without call steps | params_flow.rb:105:27:105:48 | Array | -| params_flow.rb:105:27:105:48 | call to [] | type tracker with call steps with content splat position 1 (shifted) | params_flow.rb:98:1:103:3 | synthetic splat parameter | | params_flow.rb:105:27:105:48 | call to [] | type tracker without call steps | params_flow.rb:105:27:105:48 | call to [] | | params_flow.rb:105:27:105:48 | call to [] | type tracker without call steps with content element 0 or unknown | params_flow.rb:105:26:105:48 | * ... | -| params_flow.rb:105:27:105:48 | call to [] | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:105:1:105:49 | synthetic splat argument | -| params_flow.rb:105:27:105:48 | synthetic splat argument | type tracker with call steps with content splat position 1 (shifted) | params_flow.rb:98:1:103:3 | synthetic splat parameter | +| params_flow.rb:105:27:105:48 | call to [] | type tracker without call steps with content element 1 | params_flow.rb:105:1:105:49 | synthetic splat argument | | params_flow.rb:105:27:105:48 | synthetic splat argument | type tracker without call steps | params_flow.rb:105:27:105:48 | call to [] | | params_flow.rb:105:27:105:48 | synthetic splat argument | type tracker without call steps | params_flow.rb:105:27:105:48 | synthetic splat argument | | params_flow.rb:105:27:105:48 | synthetic splat argument | type tracker without call steps with content element 0 or unknown | params_flow.rb:105:26:105:48 | * ... | -| params_flow.rb:105:27:105:48 | synthetic splat argument | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:105:1:105:49 | synthetic splat argument | -| params_flow.rb:105:28:105:36 | call to taint | type tracker with call steps with content splat position 1 (shifted) | params_flow.rb:98:1:103:3 | synthetic splat parameter | +| params_flow.rb:105:27:105:48 | synthetic splat argument | type tracker without call steps with content element 1 | params_flow.rb:105:1:105:49 | synthetic splat argument | | params_flow.rb:105:28:105:36 | call to taint | type tracker without call steps | params_flow.rb:105:28:105:36 | call to taint | | params_flow.rb:105:28:105:36 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:105:26:105:48 | * ... | | params_flow.rb:105:28:105:36 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:105:27:105:48 | call to [] | | params_flow.rb:105:28:105:36 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:105:27:105:48 | synthetic splat argument | -| params_flow.rb:105:28:105:36 | call to taint | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:105:1:105:49 | synthetic splat argument | -| params_flow.rb:105:28:105:36 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:105:28:105:36 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:105:1:105:49 | synthetic splat argument | | params_flow.rb:105:28:105:36 | synthetic splat argument | type tracker without call steps | params_flow.rb:105:28:105:36 | synthetic splat argument | | params_flow.rb:105:34:105:35 | 53 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | -| params_flow.rb:105:34:105:35 | 53 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:105:34:105:35 | 53 | type tracker with call steps with content splat position 1 (shifted) | params_flow.rb:98:1:103:3 | synthetic splat parameter | | params_flow.rb:105:34:105:35 | 53 | type tracker without call steps | params_flow.rb:105:28:105:36 | call to taint | | params_flow.rb:105:34:105:35 | 53 | type tracker without call steps | params_flow.rb:105:34:105:35 | 53 | | params_flow.rb:105:34:105:35 | 53 | type tracker without call steps with content element 0 | params_flow.rb:105:26:105:48 | * ... | | params_flow.rb:105:34:105:35 | 53 | type tracker without call steps with content element 0 | params_flow.rb:105:27:105:48 | call to [] | | params_flow.rb:105:34:105:35 | 53 | type tracker without call steps with content element 0 | params_flow.rb:105:27:105:48 | synthetic splat argument | -| params_flow.rb:105:34:105:35 | 53 | type tracker without call steps with content splat position 0 | params_flow.rb:105:28:105:36 | synthetic splat argument | -| params_flow.rb:105:34:105:35 | 53 | type tracker without call steps with content splat position 1 (shifted) | params_flow.rb:105:1:105:49 | synthetic splat argument | -| params_flow.rb:105:39:105:47 | call to taint | type tracker with call steps with content splat position 2 (shifted) | params_flow.rb:98:1:103:3 | synthetic splat parameter | +| params_flow.rb:105:34:105:35 | 53 | type tracker without call steps with content element 0 | params_flow.rb:105:28:105:36 | synthetic splat argument | +| params_flow.rb:105:34:105:35 | 53 | type tracker without call steps with content element 1 | params_flow.rb:105:1:105:49 | synthetic splat argument | | params_flow.rb:105:39:105:47 | call to taint | type tracker without call steps | params_flow.rb:105:39:105:47 | call to taint | | params_flow.rb:105:39:105:47 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:105:26:105:48 | * ... | | params_flow.rb:105:39:105:47 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:105:27:105:48 | call to [] | | params_flow.rb:105:39:105:47 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:105:27:105:48 | synthetic splat argument | -| params_flow.rb:105:39:105:47 | call to taint | type tracker without call steps with content splat position 2 (shifted) | params_flow.rb:105:1:105:49 | synthetic splat argument | -| params_flow.rb:105:39:105:47 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:105:39:105:47 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:105:1:105:49 | synthetic splat argument | | params_flow.rb:105:39:105:47 | synthetic splat argument | type tracker without call steps | params_flow.rb:105:39:105:47 | synthetic splat argument | | params_flow.rb:105:45:105:46 | 54 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | -| params_flow.rb:105:45:105:46 | 54 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:105:45:105:46 | 54 | type tracker with call steps with content splat position 2 (shifted) | params_flow.rb:98:1:103:3 | synthetic splat parameter | | params_flow.rb:105:45:105:46 | 54 | type tracker without call steps | params_flow.rb:105:39:105:47 | call to taint | | params_flow.rb:105:45:105:46 | 54 | type tracker without call steps | params_flow.rb:105:45:105:46 | 54 | +| params_flow.rb:105:45:105:46 | 54 | type tracker without call steps with content element 0 | params_flow.rb:105:39:105:47 | synthetic splat argument | | params_flow.rb:105:45:105:46 | 54 | type tracker without call steps with content element 1 | params_flow.rb:105:26:105:48 | * ... | | params_flow.rb:105:45:105:46 | 54 | type tracker without call steps with content element 1 | params_flow.rb:105:27:105:48 | call to [] | | params_flow.rb:105:45:105:46 | 54 | type tracker without call steps with content element 1 | params_flow.rb:105:27:105:48 | synthetic splat argument | -| params_flow.rb:105:45:105:46 | 54 | type tracker without call steps with content splat position 0 | params_flow.rb:105:39:105:47 | synthetic splat argument | -| params_flow.rb:105:45:105:46 | 54 | type tracker without call steps with content splat position 2 (shifted) | params_flow.rb:105:1:105:49 | synthetic splat argument | +| params_flow.rb:105:45:105:46 | 54 | type tracker without call steps with content element 2 | params_flow.rb:105:1:105:49 | synthetic splat argument | | params_flow.rb:106:1:106:46 | call to splatmidsmall | type tracker without call steps | params_flow.rb:106:1:106:46 | call to splatmidsmall | | params_flow.rb:106:1:106:46 | synthetic splat argument | type tracker with call steps | params_flow.rb:98:1:103:3 | synthetic splat parameter | | params_flow.rb:106:1:106:46 | synthetic splat argument | type tracker without call steps | params_flow.rb:106:1:106:46 | synthetic splat argument | | params_flow.rb:106:15:106:23 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:106:15:106:23 | call to taint | type tracker with call steps | params_flow.rb:98:19:98:19 | a | -| params_flow.rb:106:15:106:23 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:106:15:106:23 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:106:15:106:23 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:98:1:103:3 | synthetic splat parameter | -| params_flow.rb:106:15:106:23 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:99:5:99:10 | synthetic splat argument | +| params_flow.rb:106:15:106:23 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:106:15:106:23 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:98:1:103:3 | synthetic splat parameter | +| params_flow.rb:106:15:106:23 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:99:5:99:10 | synthetic splat argument | | params_flow.rb:106:15:106:23 | call to taint | type tracker without call steps | params_flow.rb:106:15:106:23 | call to taint | -| params_flow.rb:106:15:106:23 | call to taint | type tracker without call steps with content splat position 0 | params_flow.rb:106:1:106:46 | synthetic splat argument | -| params_flow.rb:106:15:106:23 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:106:15:106:23 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:106:1:106:46 | synthetic splat argument | | params_flow.rb:106:15:106:23 | synthetic splat argument | type tracker without call steps | params_flow.rb:106:15:106:23 | synthetic splat argument | | params_flow.rb:106:21:106:22 | 55 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:106:21:106:22 | 55 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:106:21:106:22 | 55 | type tracker with call steps | params_flow.rb:98:19:98:19 | a | -| params_flow.rb:106:21:106:22 | 55 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:106:21:106:22 | 55 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:106:21:106:22 | 55 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:106:21:106:22 | 55 | type tracker with call steps with content splat position 0 | params_flow.rb:98:1:103:3 | synthetic splat parameter | -| params_flow.rb:106:21:106:22 | 55 | type tracker with call steps with content splat position 0 | params_flow.rb:99:5:99:10 | synthetic splat argument | +| params_flow.rb:106:21:106:22 | 55 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:106:21:106:22 | 55 | type tracker with call steps with content element 0 | params_flow.rb:98:1:103:3 | synthetic splat parameter | +| params_flow.rb:106:21:106:22 | 55 | type tracker with call steps with content element 0 | params_flow.rb:99:5:99:10 | synthetic splat argument | | params_flow.rb:106:21:106:22 | 55 | type tracker without call steps | params_flow.rb:106:15:106:23 | call to taint | | params_flow.rb:106:21:106:22 | 55 | type tracker without call steps | params_flow.rb:106:21:106:22 | 55 | -| params_flow.rb:106:21:106:22 | 55 | type tracker without call steps with content splat position 0 | params_flow.rb:106:1:106:46 | synthetic splat argument | -| params_flow.rb:106:21:106:22 | 55 | type tracker without call steps with content splat position 0 | params_flow.rb:106:15:106:23 | synthetic splat argument | -| params_flow.rb:106:26:106:34 | call to taint | type tracker with call steps with content splat position 1 | params_flow.rb:98:1:103:3 | synthetic splat parameter | +| params_flow.rb:106:21:106:22 | 55 | type tracker without call steps with content element 0 | params_flow.rb:106:1:106:46 | synthetic splat argument | +| params_flow.rb:106:21:106:22 | 55 | type tracker without call steps with content element 0 | params_flow.rb:106:15:106:23 | synthetic splat argument | +| params_flow.rb:106:26:106:34 | call to taint | type tracker with call steps with content element 1 | params_flow.rb:98:1:103:3 | synthetic splat parameter | | params_flow.rb:106:26:106:34 | call to taint | type tracker without call steps | params_flow.rb:106:26:106:34 | call to taint | -| params_flow.rb:106:26:106:34 | call to taint | type tracker without call steps with content splat position 1 | params_flow.rb:106:1:106:46 | synthetic splat argument | -| params_flow.rb:106:26:106:34 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:106:26:106:34 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:106:1:106:46 | synthetic splat argument | | params_flow.rb:106:26:106:34 | synthetic splat argument | type tracker without call steps | params_flow.rb:106:26:106:34 | synthetic splat argument | | params_flow.rb:106:32:106:33 | 56 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | -| params_flow.rb:106:32:106:33 | 56 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:106:32:106:33 | 56 | type tracker with call steps with content splat position 1 | params_flow.rb:98:1:103:3 | synthetic splat parameter | +| params_flow.rb:106:32:106:33 | 56 | type tracker with call steps with content element 1 | params_flow.rb:98:1:103:3 | synthetic splat parameter | | params_flow.rb:106:32:106:33 | 56 | type tracker without call steps | params_flow.rb:106:26:106:34 | call to taint | | params_flow.rb:106:32:106:33 | 56 | type tracker without call steps | params_flow.rb:106:32:106:33 | 56 | -| params_flow.rb:106:32:106:33 | 56 | type tracker without call steps with content splat position 0 | params_flow.rb:106:26:106:34 | synthetic splat argument | -| params_flow.rb:106:32:106:33 | 56 | type tracker without call steps with content splat position 1 | params_flow.rb:106:1:106:46 | synthetic splat argument | -| params_flow.rb:106:37:106:45 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:106:37:106:45 | call to taint | type tracker with call steps | params_flow.rb:98:31:98:31 | b | -| params_flow.rb:106:37:106:45 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:106:37:106:45 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:106:37:106:45 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:102:5:102:10 | synthetic splat argument | -| params_flow.rb:106:37:106:45 | call to taint | type tracker with call steps with content splat position 2 | params_flow.rb:98:1:103:3 | synthetic splat parameter | +| params_flow.rb:106:32:106:33 | 56 | type tracker without call steps with content element 0 | params_flow.rb:106:26:106:34 | synthetic splat argument | +| params_flow.rb:106:32:106:33 | 56 | type tracker without call steps with content element 1 | params_flow.rb:106:1:106:46 | synthetic splat argument | +| params_flow.rb:106:37:106:45 | call to taint | type tracker with call steps with content element 2 | params_flow.rb:98:1:103:3 | synthetic splat parameter | | params_flow.rb:106:37:106:45 | call to taint | type tracker without call steps | params_flow.rb:106:37:106:45 | call to taint | -| params_flow.rb:106:37:106:45 | call to taint | type tracker without call steps with content splat position 2 | params_flow.rb:106:1:106:46 | synthetic splat argument | -| params_flow.rb:106:37:106:45 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:106:37:106:45 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:106:1:106:46 | synthetic splat argument | | params_flow.rb:106:37:106:45 | synthetic splat argument | type tracker without call steps | params_flow.rb:106:37:106:45 | synthetic splat argument | | params_flow.rb:106:43:106:44 | 57 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | -| params_flow.rb:106:43:106:44 | 57 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:106:43:106:44 | 57 | type tracker with call steps | params_flow.rb:98:31:98:31 | b | -| params_flow.rb:106:43:106:44 | 57 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:106:43:106:44 | 57 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:106:43:106:44 | 57 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:106:43:106:44 | 57 | type tracker with call steps with content splat position 0 | params_flow.rb:102:5:102:10 | synthetic splat argument | -| params_flow.rb:106:43:106:44 | 57 | type tracker with call steps with content splat position 2 | params_flow.rb:98:1:103:3 | synthetic splat parameter | +| params_flow.rb:106:43:106:44 | 57 | type tracker with call steps with content element 2 | params_flow.rb:98:1:103:3 | synthetic splat parameter | | params_flow.rb:106:43:106:44 | 57 | type tracker without call steps | params_flow.rb:106:37:106:45 | call to taint | | params_flow.rb:106:43:106:44 | 57 | type tracker without call steps | params_flow.rb:106:43:106:44 | 57 | -| params_flow.rb:106:43:106:44 | 57 | type tracker without call steps with content splat position 0 | params_flow.rb:106:37:106:45 | synthetic splat argument | -| params_flow.rb:106:43:106:44 | 57 | type tracker without call steps with content splat position 2 | params_flow.rb:106:1:106:46 | synthetic splat argument | +| params_flow.rb:106:43:106:44 | 57 | type tracker without call steps with content element 0 | params_flow.rb:106:37:106:45 | synthetic splat argument | +| params_flow.rb:106:43:106:44 | 57 | type tracker without call steps with content element 2 | params_flow.rb:106:1:106:46 | synthetic splat argument | | params_flow.rb:108:1:112:3 | &block | type tracker without call steps | params_flow.rb:108:1:112:3 | &block | | params_flow.rb:108:1:112:3 | self in splat_followed_by_keyword_param | type tracker with call steps | params_flow.rb:5:1:7:3 | self in sink | | params_flow.rb:108:1:112:3 | self in splat_followed_by_keyword_param | type tracker without call steps | params_flow.rb:108:1:112:3 | self in splat_followed_by_keyword_param | @@ -2492,167 +2057,140 @@ track | params_flow.rb:108:1:112:3 | synthetic hash-splat parameter | type tracker without call steps | params_flow.rb:108:1:112:3 | synthetic hash-splat parameter | | params_flow.rb:108:1:112:3 | synthetic splat parameter | type tracker without call steps | params_flow.rb:108:1:112:3 | synthetic splat parameter | | params_flow.rb:108:37:108:37 | a | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:108:37:108:37 | a | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:108:37:108:37 | a | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:108:37:108:37 | a | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:108:37:108:37 | a | type tracker without call steps | params_flow.rb:108:37:108:37 | a | | params_flow.rb:108:37:108:37 | a | type tracker without call steps | params_flow.rb:108:37:108:37 | a | -| params_flow.rb:108:37:108:37 | a | type tracker without call steps with content splat position 0 | params_flow.rb:109:5:109:10 | synthetic splat argument | +| params_flow.rb:108:37:108:37 | a | type tracker without call steps with content element 0 | params_flow.rb:109:5:109:10 | synthetic splat argument | | params_flow.rb:108:40:108:41 | *b | type tracker without call steps | params_flow.rb:108:40:108:41 | *b | | params_flow.rb:108:41:108:41 | b | type tracker without call steps | params_flow.rb:108:41:108:41 | b | | params_flow.rb:108:44:108:44 | c | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:108:44:108:44 | c | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:108:44:108:44 | c | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:108:44:108:44 | c | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:108:44:108:44 | c | type tracker without call steps | params_flow.rb:108:44:108:44 | c | | params_flow.rb:108:44:108:44 | c | type tracker without call steps | params_flow.rb:108:44:108:44 | c | -| params_flow.rb:108:44:108:44 | c | type tracker without call steps with content splat position 0 | params_flow.rb:111:5:111:10 | synthetic splat argument | +| params_flow.rb:108:44:108:44 | c | type tracker without call steps with content element 0 | params_flow.rb:111:5:111:10 | synthetic splat argument | | params_flow.rb:109:5:109:10 | call to sink | type tracker without call steps | params_flow.rb:109:5:109:10 | call to sink | -| params_flow.rb:109:5:109:10 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:109:5:109:10 | synthetic splat argument | type tracker without call steps | params_flow.rb:109:5:109:10 | synthetic splat argument | | params_flow.rb:110:5:110:13 | call to sink | type tracker without call steps | params_flow.rb:110:5:110:13 | call to sink | -| params_flow.rb:110:5:110:13 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:110:5:110:13 | synthetic splat argument | type tracker without call steps | params_flow.rb:110:5:110:13 | synthetic splat argument | | params_flow.rb:110:10:110:13 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:110:10:110:13 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:110:10:110:13 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:110:10:110:13 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:110:10:110:13 | ...[...] | type tracker without call steps | params_flow.rb:110:10:110:13 | ...[...] | -| params_flow.rb:110:10:110:13 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:110:5:110:13 | synthetic splat argument | +| params_flow.rb:110:10:110:13 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:110:5:110:13 | synthetic splat argument | | params_flow.rb:110:10:110:13 | synthetic splat argument | type tracker without call steps | params_flow.rb:110:10:110:13 | synthetic splat argument | | params_flow.rb:110:12:110:12 | 0 | type tracker without call steps | params_flow.rb:110:12:110:12 | 0 | -| params_flow.rb:110:12:110:12 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:110:10:110:13 | synthetic splat argument | +| params_flow.rb:110:12:110:12 | 0 | type tracker without call steps with content element 0 | params_flow.rb:110:10:110:13 | synthetic splat argument | | params_flow.rb:111:5:111:10 | call to sink | type tracker without call steps | params_flow.rb:111:5:111:10 | call to sink | | params_flow.rb:111:5:111:10 | call to sink | type tracker without call steps | params_flow.rb:114:1:114:67 | call to splat_followed_by_keyword_param | -| params_flow.rb:111:5:111:10 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:111:5:111:10 | synthetic splat argument | type tracker without call steps | params_flow.rb:111:5:111:10 | synthetic splat argument | | params_flow.rb:114:1:114:67 | call to splat_followed_by_keyword_param | type tracker without call steps | params_flow.rb:114:1:114:67 | call to splat_followed_by_keyword_param | -| params_flow.rb:114:1:114:67 | synthetic hash-splat argument | type tracker with call steps | params_flow.rb:108:1:112:3 | synthetic hash-splat parameter | | params_flow.rb:114:1:114:67 | synthetic hash-splat argument | type tracker without call steps | params_flow.rb:114:1:114:67 | synthetic hash-splat argument | | params_flow.rb:114:1:114:67 | synthetic splat argument | type tracker with call steps | params_flow.rb:108:1:112:3 | synthetic splat parameter | | params_flow.rb:114:1:114:67 | synthetic splat argument | type tracker without call steps | params_flow.rb:114:1:114:67 | synthetic splat argument | | params_flow.rb:114:33:114:41 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:114:33:114:41 | call to taint | type tracker with call steps | params_flow.rb:108:37:108:37 | a | -| params_flow.rb:114:33:114:41 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:114:33:114:41 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:114:33:114:41 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:108:1:112:3 | synthetic splat parameter | -| params_flow.rb:114:33:114:41 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:109:5:109:10 | synthetic splat argument | +| params_flow.rb:114:33:114:41 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:114:33:114:41 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:108:1:112:3 | synthetic splat parameter | +| params_flow.rb:114:33:114:41 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:109:5:109:10 | synthetic splat argument | | params_flow.rb:114:33:114:41 | call to taint | type tracker without call steps | params_flow.rb:114:33:114:41 | call to taint | -| params_flow.rb:114:33:114:41 | call to taint | type tracker without call steps with content splat position 0 | params_flow.rb:114:1:114:67 | synthetic splat argument | -| params_flow.rb:114:33:114:41 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:114:33:114:41 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:114:1:114:67 | synthetic splat argument | | params_flow.rb:114:33:114:41 | synthetic splat argument | type tracker without call steps | params_flow.rb:114:33:114:41 | synthetic splat argument | | params_flow.rb:114:39:114:40 | 58 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:114:39:114:40 | 58 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:114:39:114:40 | 58 | type tracker with call steps | params_flow.rb:108:37:108:37 | a | -| params_flow.rb:114:39:114:40 | 58 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:114:39:114:40 | 58 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:114:39:114:40 | 58 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:114:39:114:40 | 58 | type tracker with call steps with content splat position 0 | params_flow.rb:108:1:112:3 | synthetic splat parameter | -| params_flow.rb:114:39:114:40 | 58 | type tracker with call steps with content splat position 0 | params_flow.rb:109:5:109:10 | synthetic splat argument | +| params_flow.rb:114:39:114:40 | 58 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:114:39:114:40 | 58 | type tracker with call steps with content element 0 | params_flow.rb:108:1:112:3 | synthetic splat parameter | +| params_flow.rb:114:39:114:40 | 58 | type tracker with call steps with content element 0 | params_flow.rb:109:5:109:10 | synthetic splat argument | | params_flow.rb:114:39:114:40 | 58 | type tracker without call steps | params_flow.rb:114:33:114:41 | call to taint | | params_flow.rb:114:39:114:40 | 58 | type tracker without call steps | params_flow.rb:114:39:114:40 | 58 | -| params_flow.rb:114:39:114:40 | 58 | type tracker without call steps with content splat position 0 | params_flow.rb:114:1:114:67 | synthetic splat argument | -| params_flow.rb:114:39:114:40 | 58 | type tracker without call steps with content splat position 0 | params_flow.rb:114:33:114:41 | synthetic splat argument | +| params_flow.rb:114:39:114:40 | 58 | type tracker without call steps with content element 0 | params_flow.rb:114:1:114:67 | synthetic splat argument | +| params_flow.rb:114:39:114:40 | 58 | type tracker without call steps with content element 0 | params_flow.rb:114:33:114:41 | synthetic splat argument | | params_flow.rb:114:44:114:52 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:114:44:114:52 | call to taint | type tracker with call steps | params_flow.rb:110:10:110:13 | ...[...] | +| params_flow.rb:114:44:114:52 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:114:44:114:52 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:108:40:108:41 | *b | -| params_flow.rb:114:44:114:52 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:114:44:114:52 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:114:44:114:52 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:110:5:110:13 | synthetic splat argument | -| params_flow.rb:114:44:114:52 | call to taint | type tracker with call steps with content splat position 1 | params_flow.rb:108:1:112:3 | synthetic splat parameter | +| params_flow.rb:114:44:114:52 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:110:5:110:13 | synthetic splat argument | +| params_flow.rb:114:44:114:52 | call to taint | type tracker with call steps with content element 1 | params_flow.rb:108:1:112:3 | synthetic splat parameter | | params_flow.rb:114:44:114:52 | call to taint | type tracker without call steps | params_flow.rb:114:44:114:52 | call to taint | -| params_flow.rb:114:44:114:52 | call to taint | type tracker without call steps with content splat position 1 | params_flow.rb:114:1:114:67 | synthetic splat argument | -| params_flow.rb:114:44:114:52 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:114:44:114:52 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:114:1:114:67 | synthetic splat argument | | params_flow.rb:114:44:114:52 | synthetic splat argument | type tracker without call steps | params_flow.rb:114:44:114:52 | synthetic splat argument | | params_flow.rb:114:50:114:51 | 59 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:114:50:114:51 | 59 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:114:50:114:51 | 59 | type tracker with call steps | params_flow.rb:110:10:110:13 | ...[...] | +| params_flow.rb:114:50:114:51 | 59 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:114:50:114:51 | 59 | type tracker with call steps with content element 0 | params_flow.rb:108:40:108:41 | *b | -| params_flow.rb:114:50:114:51 | 59 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:114:50:114:51 | 59 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:114:50:114:51 | 59 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:114:50:114:51 | 59 | type tracker with call steps with content splat position 0 | params_flow.rb:110:5:110:13 | synthetic splat argument | -| params_flow.rb:114:50:114:51 | 59 | type tracker with call steps with content splat position 1 | params_flow.rb:108:1:112:3 | synthetic splat parameter | +| params_flow.rb:114:50:114:51 | 59 | type tracker with call steps with content element 0 | params_flow.rb:110:5:110:13 | synthetic splat argument | +| params_flow.rb:114:50:114:51 | 59 | type tracker with call steps with content element 1 | params_flow.rb:108:1:112:3 | synthetic splat parameter | | params_flow.rb:114:50:114:51 | 59 | type tracker without call steps | params_flow.rb:114:44:114:52 | call to taint | | params_flow.rb:114:50:114:51 | 59 | type tracker without call steps | params_flow.rb:114:50:114:51 | 59 | -| params_flow.rb:114:50:114:51 | 59 | type tracker without call steps with content splat position 0 | params_flow.rb:114:44:114:52 | synthetic splat argument | -| params_flow.rb:114:50:114:51 | 59 | type tracker without call steps with content splat position 1 | params_flow.rb:114:1:114:67 | synthetic splat argument | +| params_flow.rb:114:50:114:51 | 59 | type tracker without call steps with content element 0 | params_flow.rb:114:44:114:52 | synthetic splat argument | +| params_flow.rb:114:50:114:51 | 59 | type tracker without call steps with content element 1 | params_flow.rb:114:1:114:67 | synthetic splat argument | | params_flow.rb:114:55:114:55 | :c | type tracker without call steps | params_flow.rb:114:55:114:55 | :c | | params_flow.rb:114:55:114:66 | Pair | type tracker without call steps | params_flow.rb:114:55:114:66 | Pair | | params_flow.rb:114:58:114:66 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:114:58:114:66 | call to taint | type tracker with call steps | params_flow.rb:108:44:108:44 | c | -| params_flow.rb:114:58:114:66 | call to taint | type tracker with call steps with content hash-splat position :c | params_flow.rb:108:1:112:3 | synthetic hash-splat parameter | -| params_flow.rb:114:58:114:66 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:114:58:114:66 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:114:58:114:66 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:111:5:111:10 | synthetic splat argument | +| params_flow.rb:114:58:114:66 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:114:58:114:66 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:111:5:111:10 | synthetic splat argument | | params_flow.rb:114:58:114:66 | call to taint | type tracker without call steps | params_flow.rb:114:58:114:66 | call to taint | -| params_flow.rb:114:58:114:66 | call to taint | type tracker without call steps with content hash-splat position :c | params_flow.rb:114:1:114:67 | synthetic hash-splat argument | -| params_flow.rb:114:58:114:66 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:114:58:114:66 | call to taint | type tracker without call steps with content element :c | params_flow.rb:114:1:114:67 | synthetic hash-splat argument | | params_flow.rb:114:58:114:66 | synthetic splat argument | type tracker without call steps | params_flow.rb:114:58:114:66 | synthetic splat argument | | params_flow.rb:114:64:114:65 | 60 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:114:64:114:65 | 60 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:114:64:114:65 | 60 | type tracker with call steps | params_flow.rb:108:44:108:44 | c | -| params_flow.rb:114:64:114:65 | 60 | type tracker with call steps with content hash-splat position :c | params_flow.rb:108:1:112:3 | synthetic hash-splat parameter | -| params_flow.rb:114:64:114:65 | 60 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:114:64:114:65 | 60 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:114:64:114:65 | 60 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:114:64:114:65 | 60 | type tracker with call steps with content splat position 0 | params_flow.rb:111:5:111:10 | synthetic splat argument | +| params_flow.rb:114:64:114:65 | 60 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:114:64:114:65 | 60 | type tracker with call steps with content element 0 | params_flow.rb:111:5:111:10 | synthetic splat argument | | params_flow.rb:114:64:114:65 | 60 | type tracker without call steps | params_flow.rb:114:58:114:66 | call to taint | | params_flow.rb:114:64:114:65 | 60 | type tracker without call steps | params_flow.rb:114:64:114:65 | 60 | -| params_flow.rb:114:64:114:65 | 60 | type tracker without call steps with content hash-splat position :c | params_flow.rb:114:1:114:67 | synthetic hash-splat argument | -| params_flow.rb:114:64:114:65 | 60 | type tracker without call steps with content splat position 0 | params_flow.rb:114:58:114:66 | synthetic splat argument | +| params_flow.rb:114:64:114:65 | 60 | type tracker without call steps with content element 0 | params_flow.rb:114:58:114:66 | synthetic splat argument | +| params_flow.rb:114:64:114:65 | 60 | type tracker without call steps with content element :c | params_flow.rb:114:1:114:67 | synthetic hash-splat argument | | params_flow.rb:116:1:116:1 | x | type tracker without call steps | params_flow.rb:116:1:116:1 | x | | params_flow.rb:116:5:116:6 | Array | type tracker without call steps | params_flow.rb:116:5:116:6 | Array | | params_flow.rb:116:5:116:6 | call to [] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:116:5:116:6 | call to [] | type tracker with call steps | params_flow.rb:9:16:9:17 | p1 | +| params_flow.rb:116:5:116:6 | call to [] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:116:5:116:6 | call to [] | type tracker with call steps with content element 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | | params_flow.rb:116:5:116:6 | call to [] | type tracker with call steps with content element 0 or unknown | params_flow.rb:9:1:12:3 | synthetic splat parameter | -| params_flow.rb:116:5:116:6 | call to [] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:116:5:116:6 | call to [] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:116:5:116:6 | call to [] | type tracker with call steps with content splat position 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | | params_flow.rb:116:5:116:6 | call to [] | type tracker without call steps | params_flow.rb:116:5:116:6 | call to [] | | params_flow.rb:116:5:116:6 | call to [] | type tracker without call steps with content element 0 or unknown | params_flow.rb:118:12:118:13 | * ... | | params_flow.rb:117:1:117:1 | [post] x | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:117:1:117:1 | [post] x | type tracker with call steps | params_flow.rb:9:16:9:17 | p1 | +| params_flow.rb:117:1:117:1 | [post] x | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:117:1:117:1 | [post] x | type tracker with call steps with content element 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | | params_flow.rb:117:1:117:1 | [post] x | type tracker with call steps with content element 0 or unknown | params_flow.rb:9:1:12:3 | synthetic splat parameter | -| params_flow.rb:117:1:117:1 | [post] x | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:117:1:117:1 | [post] x | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:117:1:117:1 | [post] x | type tracker with call steps with content splat position 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | | params_flow.rb:117:1:117:1 | [post] x | type tracker without call steps | params_flow.rb:117:1:117:1 | [post] x | | params_flow.rb:117:1:117:1 | [post] x | type tracker without call steps with content element 0 or unknown | params_flow.rb:118:12:118:13 | * ... | | params_flow.rb:117:1:117:15 | call to []= | type tracker without call steps | params_flow.rb:117:1:117:15 | call to []= | | params_flow.rb:117:1:117:15 | synthetic splat argument | type tracker without call steps | params_flow.rb:117:1:117:15 | synthetic splat argument | | params_flow.rb:117:3:117:14 | call to some_index | type tracker without call steps | params_flow.rb:117:3:117:14 | call to some_index | -| params_flow.rb:117:3:117:14 | call to some_index | type tracker without call steps with content splat position 0 | params_flow.rb:117:1:117:15 | synthetic splat argument | +| params_flow.rb:117:3:117:14 | call to some_index | type tracker without call steps with content element 0 | params_flow.rb:117:1:117:15 | synthetic splat argument | | params_flow.rb:117:19:117:27 | __synth__0 | type tracker without call steps | params_flow.rb:117:19:117:27 | __synth__0 | | params_flow.rb:117:19:117:27 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:117:19:117:27 | call to taint | type tracker with call steps | params_flow.rb:9:16:9:17 | p1 | | params_flow.rb:117:19:117:27 | call to taint | type tracker with call steps | params_flow.rb:9:20:9:21 | p2 | | params_flow.rb:117:19:117:27 | call to taint | type tracker with call steps with content element | params_flow.rb:9:1:12:3 | synthetic splat parameter | -| params_flow.rb:117:19:117:27 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:117:19:117:27 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:117:19:117:27 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | -| params_flow.rb:117:19:117:27 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:11:5:11:11 | synthetic splat argument | +| params_flow.rb:117:19:117:27 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:117:19:117:27 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | +| params_flow.rb:117:19:117:27 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:11:5:11:11 | synthetic splat argument | | params_flow.rb:117:19:117:27 | call to taint | type tracker without call steps | params_flow.rb:117:19:117:27 | call to taint | | params_flow.rb:117:19:117:27 | call to taint | type tracker without call steps with content attribute [] | params_flow.rb:117:1:117:1 | [post] x | | params_flow.rb:117:19:117:27 | call to taint | type tracker without call steps with content element | params_flow.rb:117:1:117:1 | [post] x | | params_flow.rb:117:19:117:27 | call to taint | type tracker without call steps with content element | params_flow.rb:118:12:118:13 | * ... | -| params_flow.rb:117:19:117:27 | call to taint | type tracker without call steps with content splat position 1 | params_flow.rb:117:1:117:15 | synthetic splat argument | -| params_flow.rb:117:19:117:27 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:117:19:117:27 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:117:1:117:15 | synthetic splat argument | | params_flow.rb:117:19:117:27 | synthetic splat argument | type tracker without call steps | params_flow.rb:117:19:117:27 | synthetic splat argument | | params_flow.rb:117:25:117:26 | 61 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:117:25:117:26 | 61 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:117:25:117:26 | 61 | type tracker with call steps | params_flow.rb:9:16:9:17 | p1 | | params_flow.rb:117:25:117:26 | 61 | type tracker with call steps | params_flow.rb:9:20:9:21 | p2 | | params_flow.rb:117:25:117:26 | 61 | type tracker with call steps with content element | params_flow.rb:9:1:12:3 | synthetic splat parameter | -| params_flow.rb:117:25:117:26 | 61 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:117:25:117:26 | 61 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:117:25:117:26 | 61 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:117:25:117:26 | 61 | type tracker with call steps with content splat position 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | -| params_flow.rb:117:25:117:26 | 61 | type tracker with call steps with content splat position 0 | params_flow.rb:11:5:11:11 | synthetic splat argument | +| params_flow.rb:117:25:117:26 | 61 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:117:25:117:26 | 61 | type tracker with call steps with content element 0 | params_flow.rb:10:5:10:11 | synthetic splat argument | +| params_flow.rb:117:25:117:26 | 61 | type tracker with call steps with content element 0 | params_flow.rb:11:5:11:11 | synthetic splat argument | | params_flow.rb:117:25:117:26 | 61 | type tracker without call steps | params_flow.rb:117:19:117:27 | call to taint | | params_flow.rb:117:25:117:26 | 61 | type tracker without call steps | params_flow.rb:117:25:117:26 | 61 | | params_flow.rb:117:25:117:26 | 61 | type tracker without call steps with content attribute [] | params_flow.rb:117:1:117:1 | [post] x | | params_flow.rb:117:25:117:26 | 61 | type tracker without call steps with content element | params_flow.rb:117:1:117:1 | [post] x | | params_flow.rb:117:25:117:26 | 61 | type tracker without call steps with content element | params_flow.rb:118:12:118:13 | * ... | -| params_flow.rb:117:25:117:26 | 61 | type tracker without call steps with content splat position 0 | params_flow.rb:117:19:117:27 | synthetic splat argument | -| params_flow.rb:117:25:117:26 | 61 | type tracker without call steps with content splat position 1 | params_flow.rb:117:1:117:15 | synthetic splat argument | +| params_flow.rb:117:25:117:26 | 61 | type tracker without call steps with content element 0 | params_flow.rb:117:19:117:27 | synthetic splat argument | +| params_flow.rb:117:25:117:26 | 61 | type tracker without call steps with content element 1 | params_flow.rb:117:1:117:15 | synthetic splat argument | | params_flow.rb:118:1:118:14 | call to positional | type tracker without call steps | params_flow.rb:118:1:118:14 | call to positional | | params_flow.rb:118:12:118:13 | * ... | type tracker with call steps | params_flow.rb:9:1:12:3 | synthetic splat parameter | | params_flow.rb:118:12:118:13 | * ... | type tracker without call steps | params_flow.rb:118:12:118:13 | * ... | @@ -2661,101 +2199,85 @@ track | params_flow.rb:120:1:126:3 | self in destruct | type tracker with call steps | params_flow.rb:5:1:7:3 | self in sink | | params_flow.rb:120:1:126:3 | self in destruct | type tracker without call steps | params_flow.rb:120:1:126:3 | self in destruct | | params_flow.rb:120:15:120:15 | a | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:120:15:120:15 | a | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:120:15:120:15 | a | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:120:15:120:15 | a | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:120:15:120:15 | a | type tracker without call steps | params_flow.rb:120:15:120:15 | a | | params_flow.rb:120:15:120:15 | a | type tracker without call steps | params_flow.rb:120:15:120:15 | a | -| params_flow.rb:120:15:120:15 | a | type tracker without call steps with content splat position 0 | params_flow.rb:121:5:121:10 | synthetic splat argument | +| params_flow.rb:120:15:120:15 | a | type tracker without call steps with content element 0 | params_flow.rb:121:5:121:10 | synthetic splat argument | | params_flow.rb:120:17:120:17 | b | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:120:17:120:17 | b | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:120:17:120:17 | b | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:120:17:120:17 | b | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:120:17:120:17 | b | type tracker without call steps | params_flow.rb:120:17:120:17 | b | | params_flow.rb:120:17:120:17 | b | type tracker without call steps | params_flow.rb:120:17:120:17 | b | -| params_flow.rb:120:17:120:17 | b | type tracker without call steps with content splat position 0 | params_flow.rb:122:5:122:10 | synthetic splat argument | +| params_flow.rb:120:17:120:17 | b | type tracker without call steps with content element 0 | params_flow.rb:122:5:122:10 | synthetic splat argument | | params_flow.rb:120:22:120:22 | c | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:120:22:120:22 | c | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:120:22:120:22 | c | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:120:22:120:22 | c | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:120:22:120:22 | c | type tracker without call steps | params_flow.rb:120:22:120:22 | c | | params_flow.rb:120:22:120:22 | c | type tracker without call steps | params_flow.rb:120:22:120:22 | c | -| params_flow.rb:120:22:120:22 | c | type tracker without call steps with content splat position 0 | params_flow.rb:123:5:123:10 | synthetic splat argument | +| params_flow.rb:120:22:120:22 | c | type tracker without call steps with content element 0 | params_flow.rb:123:5:123:10 | synthetic splat argument | | params_flow.rb:120:25:120:25 | d | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:120:25:120:25 | d | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:120:25:120:25 | d | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:120:25:120:25 | d | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:120:25:120:25 | d | type tracker without call steps | params_flow.rb:120:25:120:25 | d | | params_flow.rb:120:25:120:25 | d | type tracker without call steps | params_flow.rb:120:25:120:25 | d | -| params_flow.rb:120:25:120:25 | d | type tracker without call steps with content splat position 0 | params_flow.rb:124:5:124:10 | synthetic splat argument | +| params_flow.rb:120:25:120:25 | d | type tracker without call steps with content element 0 | params_flow.rb:124:5:124:10 | synthetic splat argument | | params_flow.rb:120:27:120:27 | e | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:120:27:120:27 | e | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:120:27:120:27 | e | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:120:27:120:27 | e | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:120:27:120:27 | e | type tracker without call steps | params_flow.rb:120:27:120:27 | e | | params_flow.rb:120:27:120:27 | e | type tracker without call steps | params_flow.rb:120:27:120:27 | e | -| params_flow.rb:120:27:120:27 | e | type tracker without call steps with content splat position 0 | params_flow.rb:125:5:125:10 | synthetic splat argument | +| params_flow.rb:120:27:120:27 | e | type tracker without call steps with content element 0 | params_flow.rb:125:5:125:10 | synthetic splat argument | | params_flow.rb:121:5:121:10 | call to sink | type tracker without call steps | params_flow.rb:121:5:121:10 | call to sink | -| params_flow.rb:121:5:121:10 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:121:5:121:10 | synthetic splat argument | type tracker without call steps | params_flow.rb:121:5:121:10 | synthetic splat argument | | params_flow.rb:122:5:122:10 | call to sink | type tracker without call steps | params_flow.rb:122:5:122:10 | call to sink | -| params_flow.rb:122:5:122:10 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:122:5:122:10 | synthetic splat argument | type tracker without call steps | params_flow.rb:122:5:122:10 | synthetic splat argument | | params_flow.rb:123:5:123:10 | call to sink | type tracker without call steps | params_flow.rb:123:5:123:10 | call to sink | -| params_flow.rb:123:5:123:10 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:123:5:123:10 | synthetic splat argument | type tracker without call steps | params_flow.rb:123:5:123:10 | synthetic splat argument | | params_flow.rb:124:5:124:10 | call to sink | type tracker without call steps | params_flow.rb:124:5:124:10 | call to sink | -| params_flow.rb:124:5:124:10 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:124:5:124:10 | synthetic splat argument | type tracker without call steps | params_flow.rb:124:5:124:10 | synthetic splat argument | | params_flow.rb:125:5:125:10 | call to sink | type tracker without call steps | params_flow.rb:125:5:125:10 | call to sink | | params_flow.rb:125:5:125:10 | call to sink | type tracker without call steps | params_flow.rb:128:1:128:61 | call to destruct | -| params_flow.rb:125:5:125:10 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:125:5:125:10 | synthetic splat argument | type tracker without call steps | params_flow.rb:125:5:125:10 | synthetic splat argument | | params_flow.rb:128:1:128:61 | call to destruct | type tracker without call steps | params_flow.rb:128:1:128:61 | call to destruct | | params_flow.rb:128:1:128:61 | synthetic splat argument | type tracker without call steps | params_flow.rb:128:1:128:61 | synthetic splat argument | | params_flow.rb:128:10:128:31 | Array | type tracker without call steps | params_flow.rb:128:10:128:31 | Array | | params_flow.rb:128:10:128:31 | call to [] | type tracker without call steps | params_flow.rb:128:10:128:31 | call to [] | -| params_flow.rb:128:10:128:31 | call to [] | type tracker without call steps with content splat position 0 | params_flow.rb:128:1:128:61 | synthetic splat argument | +| params_flow.rb:128:10:128:31 | call to [] | type tracker without call steps with content element 0 | params_flow.rb:128:1:128:61 | synthetic splat argument | | params_flow.rb:128:10:128:31 | synthetic splat argument | type tracker without call steps | params_flow.rb:128:10:128:31 | call to [] | | params_flow.rb:128:10:128:31 | synthetic splat argument | type tracker without call steps | params_flow.rb:128:10:128:31 | synthetic splat argument | -| params_flow.rb:128:10:128:31 | synthetic splat argument | type tracker without call steps with content splat position 0 | params_flow.rb:128:1:128:61 | synthetic splat argument | +| params_flow.rb:128:10:128:31 | synthetic splat argument | type tracker without call steps with content element 0 | params_flow.rb:128:1:128:61 | synthetic splat argument | | params_flow.rb:128:11:128:19 | call to taint | type tracker without call steps | params_flow.rb:128:11:128:19 | call to taint | | params_flow.rb:128:11:128:19 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:128:10:128:31 | call to [] | | params_flow.rb:128:11:128:19 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:128:10:128:31 | synthetic splat argument | -| params_flow.rb:128:11:128:19 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:128:11:128:19 | synthetic splat argument | type tracker without call steps | params_flow.rb:128:11:128:19 | synthetic splat argument | | params_flow.rb:128:17:128:18 | 62 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | -| params_flow.rb:128:17:128:18 | 62 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:128:17:128:18 | 62 | type tracker without call steps | params_flow.rb:128:11:128:19 | call to taint | | params_flow.rb:128:17:128:18 | 62 | type tracker without call steps | params_flow.rb:128:17:128:18 | 62 | | params_flow.rb:128:17:128:18 | 62 | type tracker without call steps with content element 0 | params_flow.rb:128:10:128:31 | call to [] | | params_flow.rb:128:17:128:18 | 62 | type tracker without call steps with content element 0 | params_flow.rb:128:10:128:31 | synthetic splat argument | -| params_flow.rb:128:17:128:18 | 62 | type tracker without call steps with content splat position 0 | params_flow.rb:128:11:128:19 | synthetic splat argument | +| params_flow.rb:128:17:128:18 | 62 | type tracker without call steps with content element 0 | params_flow.rb:128:11:128:19 | synthetic splat argument | | params_flow.rb:128:22:128:30 | call to taint | type tracker without call steps | params_flow.rb:128:22:128:30 | call to taint | | params_flow.rb:128:22:128:30 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:128:10:128:31 | call to [] | | params_flow.rb:128:22:128:30 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:128:10:128:31 | synthetic splat argument | -| params_flow.rb:128:22:128:30 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:128:22:128:30 | synthetic splat argument | type tracker without call steps | params_flow.rb:128:22:128:30 | synthetic splat argument | | params_flow.rb:128:28:128:29 | 63 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | -| params_flow.rb:128:28:128:29 | 63 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:128:28:128:29 | 63 | type tracker without call steps | params_flow.rb:128:22:128:30 | call to taint | | params_flow.rb:128:28:128:29 | 63 | type tracker without call steps | params_flow.rb:128:28:128:29 | 63 | +| params_flow.rb:128:28:128:29 | 63 | type tracker without call steps with content element 0 | params_flow.rb:128:22:128:30 | synthetic splat argument | | params_flow.rb:128:28:128:29 | 63 | type tracker without call steps with content element 1 | params_flow.rb:128:10:128:31 | call to [] | | params_flow.rb:128:28:128:29 | 63 | type tracker without call steps with content element 1 | params_flow.rb:128:10:128:31 | synthetic splat argument | -| params_flow.rb:128:28:128:29 | 63 | type tracker without call steps with content splat position 0 | params_flow.rb:128:22:128:30 | synthetic splat argument | | params_flow.rb:128:34:128:60 | Array | type tracker without call steps | params_flow.rb:128:34:128:60 | Array | | params_flow.rb:128:34:128:60 | call to [] | type tracker without call steps | params_flow.rb:128:34:128:60 | call to [] | -| params_flow.rb:128:34:128:60 | call to [] | type tracker without call steps with content splat position 1 | params_flow.rb:128:1:128:61 | synthetic splat argument | +| params_flow.rb:128:34:128:60 | call to [] | type tracker without call steps with content element 1 | params_flow.rb:128:1:128:61 | synthetic splat argument | | params_flow.rb:128:34:128:60 | synthetic splat argument | type tracker without call steps | params_flow.rb:128:34:128:60 | call to [] | | params_flow.rb:128:34:128:60 | synthetic splat argument | type tracker without call steps | params_flow.rb:128:34:128:60 | synthetic splat argument | -| params_flow.rb:128:34:128:60 | synthetic splat argument | type tracker without call steps with content splat position 1 | params_flow.rb:128:1:128:61 | synthetic splat argument | +| params_flow.rb:128:34:128:60 | synthetic splat argument | type tracker without call steps with content element 1 | params_flow.rb:128:1:128:61 | synthetic splat argument | | params_flow.rb:128:35:128:43 | call to taint | type tracker without call steps | params_flow.rb:128:35:128:43 | call to taint | | params_flow.rb:128:35:128:43 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:128:34:128:60 | call to [] | | params_flow.rb:128:35:128:43 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:128:34:128:60 | synthetic splat argument | -| params_flow.rb:128:35:128:43 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:128:35:128:43 | synthetic splat argument | type tracker without call steps | params_flow.rb:128:35:128:43 | synthetic splat argument | | params_flow.rb:128:41:128:42 | 64 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | -| params_flow.rb:128:41:128:42 | 64 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:128:41:128:42 | 64 | type tracker without call steps | params_flow.rb:128:35:128:43 | call to taint | | params_flow.rb:128:41:128:42 | 64 | type tracker without call steps | params_flow.rb:128:41:128:42 | 64 | | params_flow.rb:128:41:128:42 | 64 | type tracker without call steps with content element 0 | params_flow.rb:128:34:128:60 | call to [] | | params_flow.rb:128:41:128:42 | 64 | type tracker without call steps with content element 0 | params_flow.rb:128:34:128:60 | synthetic splat argument | -| params_flow.rb:128:41:128:42 | 64 | type tracker without call steps with content splat position 0 | params_flow.rb:128:35:128:43 | synthetic splat argument | +| params_flow.rb:128:41:128:42 | 64 | type tracker without call steps with content element 0 | params_flow.rb:128:35:128:43 | synthetic splat argument | | params_flow.rb:128:46:128:59 | Array | type tracker without call steps | params_flow.rb:128:46:128:59 | Array | | params_flow.rb:128:46:128:59 | call to [] | type tracker without call steps | params_flow.rb:128:46:128:59 | call to [] | | params_flow.rb:128:46:128:59 | call to [] | type tracker without call steps with content element 1 | params_flow.rb:128:34:128:60 | call to [] | @@ -2770,130 +2292,86 @@ track | params_flow.rb:128:50:128:58 | call to taint | type tracker without call steps | params_flow.rb:128:50:128:58 | call to taint | | params_flow.rb:128:50:128:58 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:128:46:128:59 | call to [] | | params_flow.rb:128:50:128:58 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:128:46:128:59 | synthetic splat argument | -| params_flow.rb:128:50:128:58 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:128:50:128:58 | synthetic splat argument | type tracker without call steps | params_flow.rb:128:50:128:58 | synthetic splat argument | | params_flow.rb:128:56:128:57 | 65 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | -| params_flow.rb:128:56:128:57 | 65 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:128:56:128:57 | 65 | type tracker without call steps | params_flow.rb:128:50:128:58 | call to taint | | params_flow.rb:128:56:128:57 | 65 | type tracker without call steps | params_flow.rb:128:56:128:57 | 65 | +| params_flow.rb:128:56:128:57 | 65 | type tracker without call steps with content element 0 | params_flow.rb:128:50:128:58 | synthetic splat argument | | params_flow.rb:128:56:128:57 | 65 | type tracker without call steps with content element 1 | params_flow.rb:128:46:128:59 | call to [] | | params_flow.rb:128:56:128:57 | 65 | type tracker without call steps with content element 1 | params_flow.rb:128:46:128:59 | synthetic splat argument | -| params_flow.rb:128:56:128:57 | 65 | type tracker without call steps with content splat position 0 | params_flow.rb:128:50:128:58 | synthetic splat argument | | params_flow.rb:130:1:130:4 | args | type tracker without call steps | params_flow.rb:130:1:130:4 | args | | params_flow.rb:130:8:130:29 | Array | type tracker without call steps | params_flow.rb:130:8:130:29 | Array | | params_flow.rb:130:8:130:29 | call to [] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:130:8:130:29 | call to [] | type tracker with call steps | params_flow.rb:83:14:83:14 | t | +| params_flow.rb:130:8:130:29 | call to [] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:130:8:130:29 | call to [] | type tracker with call steps with content element 0 | params_flow.rb:84:5:84:10 | synthetic splat argument | | params_flow.rb:130:8:130:29 | call to [] | type tracker with call steps with content element 0 or unknown | params_flow.rb:83:1:91:3 | synthetic splat parameter | -| params_flow.rb:130:8:130:29 | call to [] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:130:8:130:29 | call to [] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:130:8:130:29 | call to [] | type tracker with call steps with content splat position 0 | params_flow.rb:84:5:84:10 | synthetic splat argument | | params_flow.rb:130:8:130:29 | call to [] | type tracker without call steps | params_flow.rb:130:8:130:29 | call to [] | | params_flow.rb:130:8:130:29 | call to [] | type tracker without call steps with content element 0 or unknown | params_flow.rb:131:10:131:14 | * ... | | params_flow.rb:130:8:130:29 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:130:8:130:29 | synthetic splat argument | type tracker with call steps | params_flow.rb:83:14:83:14 | t | +| params_flow.rb:130:8:130:29 | synthetic splat argument | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:130:8:130:29 | synthetic splat argument | type tracker with call steps with content element 0 | params_flow.rb:84:5:84:10 | synthetic splat argument | | params_flow.rb:130:8:130:29 | synthetic splat argument | type tracker with call steps with content element 0 or unknown | params_flow.rb:83:1:91:3 | synthetic splat parameter | -| params_flow.rb:130:8:130:29 | synthetic splat argument | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:130:8:130:29 | synthetic splat argument | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:130:8:130:29 | synthetic splat argument | type tracker with call steps with content splat position 0 | params_flow.rb:84:5:84:10 | synthetic splat argument | | params_flow.rb:130:8:130:29 | synthetic splat argument | type tracker without call steps | params_flow.rb:130:8:130:29 | call to [] | | params_flow.rb:130:8:130:29 | synthetic splat argument | type tracker without call steps | params_flow.rb:130:8:130:29 | synthetic splat argument | | params_flow.rb:130:8:130:29 | synthetic splat argument | type tracker without call steps with content element 0 or unknown | params_flow.rb:131:10:131:14 | * ... | | params_flow.rb:130:9:130:17 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:130:9:130:17 | call to taint | type tracker with call steps | params_flow.rb:83:14:83:14 | t | +| params_flow.rb:130:9:130:17 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:130:9:130:17 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:83:1:91:3 | synthetic splat parameter | -| params_flow.rb:130:9:130:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:130:9:130:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:130:9:130:17 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:84:5:84:10 | synthetic splat argument | +| params_flow.rb:130:9:130:17 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:84:5:84:10 | synthetic splat argument | | params_flow.rb:130:9:130:17 | call to taint | type tracker without call steps | params_flow.rb:130:9:130:17 | call to taint | | params_flow.rb:130:9:130:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:130:8:130:29 | call to [] | | params_flow.rb:130:9:130:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:130:8:130:29 | synthetic splat argument | | params_flow.rb:130:9:130:17 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:131:10:131:14 | * ... | -| params_flow.rb:130:9:130:17 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:130:9:130:17 | synthetic splat argument | type tracker without call steps | params_flow.rb:130:9:130:17 | synthetic splat argument | | params_flow.rb:130:15:130:16 | 66 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:130:15:130:16 | 66 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:130:15:130:16 | 66 | type tracker with call steps | params_flow.rb:83:14:83:14 | t | +| params_flow.rb:130:15:130:16 | 66 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:130:15:130:16 | 66 | type tracker with call steps with content element 0 | params_flow.rb:83:1:91:3 | synthetic splat parameter | -| params_flow.rb:130:15:130:16 | 66 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:130:15:130:16 | 66 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:130:15:130:16 | 66 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:130:15:130:16 | 66 | type tracker with call steps with content splat position 0 | params_flow.rb:84:5:84:10 | synthetic splat argument | +| params_flow.rb:130:15:130:16 | 66 | type tracker with call steps with content element 0 | params_flow.rb:84:5:84:10 | synthetic splat argument | | params_flow.rb:130:15:130:16 | 66 | type tracker without call steps | params_flow.rb:130:9:130:17 | call to taint | | params_flow.rb:130:15:130:16 | 66 | type tracker without call steps | params_flow.rb:130:15:130:16 | 66 | | params_flow.rb:130:15:130:16 | 66 | type tracker without call steps with content element 0 | params_flow.rb:130:8:130:29 | call to [] | | params_flow.rb:130:15:130:16 | 66 | type tracker without call steps with content element 0 | params_flow.rb:130:8:130:29 | synthetic splat argument | +| params_flow.rb:130:15:130:16 | 66 | type tracker without call steps with content element 0 | params_flow.rb:130:9:130:17 | synthetic splat argument | | params_flow.rb:130:15:130:16 | 66 | type tracker without call steps with content element 0 | params_flow.rb:131:10:131:14 | * ... | -| params_flow.rb:130:15:130:16 | 66 | type tracker without call steps with content splat position 0 | params_flow.rb:130:9:130:17 | synthetic splat argument | | params_flow.rb:130:20:130:28 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:130:20:130:28 | call to taint | type tracker with call steps | params_flow.rb:83:17:83:17 | u | +| params_flow.rb:130:20:130:28 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:130:20:130:28 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:85:5:85:10 | synthetic splat argument | | params_flow.rb:130:20:130:28 | call to taint | type tracker with call steps with content element 1 | params_flow.rb:83:1:91:3 | synthetic splat parameter | -| params_flow.rb:130:20:130:28 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:130:20:130:28 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:130:20:130:28 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:85:5:85:10 | synthetic splat argument | | params_flow.rb:130:20:130:28 | call to taint | type tracker without call steps | params_flow.rb:130:20:130:28 | call to taint | | params_flow.rb:130:20:130:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:130:8:130:29 | call to [] | | params_flow.rb:130:20:130:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:130:8:130:29 | synthetic splat argument | | params_flow.rb:130:20:130:28 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:131:10:131:14 | * ... | -| params_flow.rb:130:20:130:28 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:130:20:130:28 | synthetic splat argument | type tracker without call steps | params_flow.rb:130:20:130:28 | synthetic splat argument | | params_flow.rb:130:26:130:27 | 67 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:130:26:130:27 | 67 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:130:26:130:27 | 67 | type tracker with call steps | params_flow.rb:83:17:83:17 | u | +| params_flow.rb:130:26:130:27 | 67 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:130:26:130:27 | 67 | type tracker with call steps with content element 0 | params_flow.rb:85:5:85:10 | synthetic splat argument | | params_flow.rb:130:26:130:27 | 67 | type tracker with call steps with content element 1 | params_flow.rb:83:1:91:3 | synthetic splat parameter | -| params_flow.rb:130:26:130:27 | 67 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:130:26:130:27 | 67 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:130:26:130:27 | 67 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:130:26:130:27 | 67 | type tracker with call steps with content splat position 0 | params_flow.rb:85:5:85:10 | synthetic splat argument | | params_flow.rb:130:26:130:27 | 67 | type tracker without call steps | params_flow.rb:130:20:130:28 | call to taint | | params_flow.rb:130:26:130:27 | 67 | type tracker without call steps | params_flow.rb:130:26:130:27 | 67 | +| params_flow.rb:130:26:130:27 | 67 | type tracker without call steps with content element 0 | params_flow.rb:130:20:130:28 | synthetic splat argument | | params_flow.rb:130:26:130:27 | 67 | type tracker without call steps with content element 1 | params_flow.rb:130:8:130:29 | call to [] | | params_flow.rb:130:26:130:27 | 67 | type tracker without call steps with content element 1 | params_flow.rb:130:8:130:29 | synthetic splat argument | | params_flow.rb:130:26:130:27 | 67 | type tracker without call steps with content element 1 | params_flow.rb:131:10:131:14 | * ... | -| params_flow.rb:130:26:130:27 | 67 | type tracker without call steps with content splat position 0 | params_flow.rb:130:20:130:28 | synthetic splat argument | | params_flow.rb:131:1:131:46 | call to pos_many | type tracker without call steps | params_flow.rb:131:1:131:46 | call to pos_many | | params_flow.rb:131:10:131:14 | * ... | type tracker with call steps | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:131:10:131:14 | * ... | type tracker without call steps | params_flow.rb:131:10:131:14 | * ... | -| params_flow.rb:131:17:131:25 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:131:17:131:25 | call to taint | type tracker with call steps | params_flow.rb:83:17:83:17 | u | -| params_flow.rb:131:17:131:25 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:131:17:131:25 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:131:17:131:25 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:85:5:85:10 | synthetic splat argument | | params_flow.rb:131:17:131:25 | call to taint | type tracker without call steps | params_flow.rb:131:17:131:25 | call to taint | -| params_flow.rb:131:17:131:25 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:131:17:131:25 | synthetic splat argument | type tracker without call steps | params_flow.rb:131:17:131:25 | synthetic splat argument | | params_flow.rb:131:23:131:24 | 68 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | -| params_flow.rb:131:23:131:24 | 68 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:131:23:131:24 | 68 | type tracker with call steps | params_flow.rb:83:17:83:17 | u | -| params_flow.rb:131:23:131:24 | 68 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:131:23:131:24 | 68 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:131:23:131:24 | 68 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:131:23:131:24 | 68 | type tracker with call steps with content splat position 0 | params_flow.rb:85:5:85:10 | synthetic splat argument | | params_flow.rb:131:23:131:24 | 68 | type tracker without call steps | params_flow.rb:131:17:131:25 | call to taint | | params_flow.rb:131:23:131:24 | 68 | type tracker without call steps | params_flow.rb:131:23:131:24 | 68 | -| params_flow.rb:131:23:131:24 | 68 | type tracker without call steps with content splat position 0 | params_flow.rb:131:17:131:25 | synthetic splat argument | -| params_flow.rb:131:28:131:30 | nil | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:131:28:131:30 | nil | type tracker with call steps | params_flow.rb:83:20:83:20 | v | -| params_flow.rb:131:28:131:30 | nil | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:131:28:131:30 | nil | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:131:28:131:30 | nil | type tracker with call steps with content splat position 0 | params_flow.rb:86:5:86:10 | synthetic splat argument | +| params_flow.rb:131:23:131:24 | 68 | type tracker without call steps with content element 0 | params_flow.rb:131:17:131:25 | synthetic splat argument | | params_flow.rb:131:28:131:30 | nil | type tracker without call steps | params_flow.rb:131:28:131:30 | nil | -| params_flow.rb:131:33:131:35 | nil | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:131:33:131:35 | nil | type tracker with call steps | params_flow.rb:83:23:83:23 | w | -| params_flow.rb:131:33:131:35 | nil | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:131:33:131:35 | nil | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:131:33:131:35 | nil | type tracker with call steps with content splat position 0 | params_flow.rb:87:5:87:10 | synthetic splat argument | | params_flow.rb:131:33:131:35 | nil | type tracker without call steps | params_flow.rb:131:33:131:35 | nil | -| params_flow.rb:131:38:131:40 | nil | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:131:38:131:40 | nil | type tracker with call steps | params_flow.rb:83:26:83:26 | x | -| params_flow.rb:131:38:131:40 | nil | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:131:38:131:40 | nil | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:131:38:131:40 | nil | type tracker with call steps with content splat position 0 | params_flow.rb:88:5:88:10 | synthetic splat argument | | params_flow.rb:131:38:131:40 | nil | type tracker without call steps | params_flow.rb:131:38:131:40 | nil | -| params_flow.rb:131:43:131:45 | nil | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:131:43:131:45 | nil | type tracker with call steps | params_flow.rb:83:29:83:29 | y | -| params_flow.rb:131:43:131:45 | nil | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:131:43:131:45 | nil | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:131:43:131:45 | nil | type tracker with call steps with content splat position 0 | params_flow.rb:89:5:89:10 | synthetic splat argument | | params_flow.rb:131:43:131:45 | nil | type tracker without call steps | params_flow.rb:131:43:131:45 | nil | | params_flow.rb:133:1:135:3 | &block | type tracker without call steps | params_flow.rb:133:1:135:3 | &block | | params_flow.rb:133:1:135:3 | self in splatall | type tracker with call steps | params_flow.rb:5:1:7:3 | self in sink | @@ -2903,16 +2381,14 @@ track | params_flow.rb:133:15:133:18 | args | type tracker without call steps | params_flow.rb:133:15:133:18 | args | | params_flow.rb:134:5:134:16 | call to sink | type tracker without call steps | params_flow.rb:134:5:134:16 | call to sink | | params_flow.rb:134:5:134:16 | call to sink | type tracker without call steps | params_flow.rb:137:1:137:44 | call to splatall | -| params_flow.rb:134:5:134:16 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:134:5:134:16 | synthetic splat argument | type tracker without call steps | params_flow.rb:134:5:134:16 | synthetic splat argument | | params_flow.rb:134:10:134:16 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:134:10:134:16 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:134:10:134:16 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:134:10:134:16 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:134:10:134:16 | ...[...] | type tracker without call steps | params_flow.rb:134:10:134:16 | ...[...] | -| params_flow.rb:134:10:134:16 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:134:5:134:16 | synthetic splat argument | +| params_flow.rb:134:10:134:16 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:134:5:134:16 | synthetic splat argument | | params_flow.rb:134:10:134:16 | synthetic splat argument | type tracker without call steps | params_flow.rb:134:10:134:16 | synthetic splat argument | | params_flow.rb:134:15:134:15 | 1 | type tracker without call steps | params_flow.rb:134:15:134:15 | 1 | -| params_flow.rb:134:15:134:15 | 1 | type tracker without call steps with content splat position 0 | params_flow.rb:134:10:134:16 | synthetic splat argument | +| params_flow.rb:134:15:134:15 | 1 | type tracker without call steps with content element 0 | params_flow.rb:134:10:134:16 | synthetic splat argument | | params_flow.rb:137:1:137:44 | call to splatall | type tracker without call steps | params_flow.rb:137:1:137:44 | call to splatall | | params_flow.rb:137:10:137:43 | * ... | type tracker with call steps | params_flow.rb:133:14:133:18 | *args | | params_flow.rb:137:10:137:43 | * ... | type tracker without call steps | params_flow.rb:137:10:137:43 | * ... | @@ -2929,59 +2405,51 @@ track | params_flow.rb:137:12:137:20 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:137:10:137:43 | * ... | | params_flow.rb:137:12:137:20 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:137:11:137:43 | call to [] | | params_flow.rb:137:12:137:20 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:137:11:137:43 | synthetic splat argument | -| params_flow.rb:137:12:137:20 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:137:12:137:20 | synthetic splat argument | type tracker without call steps | params_flow.rb:137:12:137:20 | synthetic splat argument | | params_flow.rb:137:18:137:19 | 69 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:137:18:137:19 | 69 | type tracker with call steps with content element 0 | params_flow.rb:133:14:133:18 | *args | -| params_flow.rb:137:18:137:19 | 69 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:137:18:137:19 | 69 | type tracker without call steps | params_flow.rb:137:12:137:20 | call to taint | | params_flow.rb:137:18:137:19 | 69 | type tracker without call steps | params_flow.rb:137:18:137:19 | 69 | | params_flow.rb:137:18:137:19 | 69 | type tracker without call steps with content element 0 | params_flow.rb:137:10:137:43 | * ... | | params_flow.rb:137:18:137:19 | 69 | type tracker without call steps with content element 0 | params_flow.rb:137:11:137:43 | call to [] | | params_flow.rb:137:18:137:19 | 69 | type tracker without call steps with content element 0 | params_flow.rb:137:11:137:43 | synthetic splat argument | -| params_flow.rb:137:18:137:19 | 69 | type tracker without call steps with content splat position 0 | params_flow.rb:137:12:137:20 | synthetic splat argument | +| params_flow.rb:137:18:137:19 | 69 | type tracker without call steps with content element 0 | params_flow.rb:137:12:137:20 | synthetic splat argument | | params_flow.rb:137:23:137:31 | call to taint | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:137:23:137:31 | call to taint | type tracker with call steps | params_flow.rb:134:10:134:16 | ...[...] | +| params_flow.rb:137:23:137:31 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:137:23:137:31 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:134:5:134:16 | synthetic splat argument | | params_flow.rb:137:23:137:31 | call to taint | type tracker with call steps with content element 1 | params_flow.rb:133:14:133:18 | *args | -| params_flow.rb:137:23:137:31 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:137:23:137:31 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:137:23:137:31 | call to taint | type tracker with call steps with content splat position 0 | params_flow.rb:134:5:134:16 | synthetic splat argument | | params_flow.rb:137:23:137:31 | call to taint | type tracker without call steps | params_flow.rb:137:23:137:31 | call to taint | | params_flow.rb:137:23:137:31 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:137:10:137:43 | * ... | | params_flow.rb:137:23:137:31 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:137:11:137:43 | call to [] | | params_flow.rb:137:23:137:31 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:137:11:137:43 | synthetic splat argument | -| params_flow.rb:137:23:137:31 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:137:23:137:31 | synthetic splat argument | type tracker without call steps | params_flow.rb:137:23:137:31 | synthetic splat argument | | params_flow.rb:137:29:137:30 | 70 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:137:29:137:30 | 70 | type tracker with call steps | params_flow.rb:5:10:5:10 | x | | params_flow.rb:137:29:137:30 | 70 | type tracker with call steps | params_flow.rb:134:10:134:16 | ...[...] | +| params_flow.rb:137:29:137:30 | 70 | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:137:29:137:30 | 70 | type tracker with call steps with content element 0 | params_flow.rb:134:5:134:16 | synthetic splat argument | | params_flow.rb:137:29:137:30 | 70 | type tracker with call steps with content element 1 | params_flow.rb:133:14:133:18 | *args | -| params_flow.rb:137:29:137:30 | 70 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:137:29:137:30 | 70 | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:137:29:137:30 | 70 | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | -| params_flow.rb:137:29:137:30 | 70 | type tracker with call steps with content splat position 0 | params_flow.rb:134:5:134:16 | synthetic splat argument | | params_flow.rb:137:29:137:30 | 70 | type tracker without call steps | params_flow.rb:137:23:137:31 | call to taint | | params_flow.rb:137:29:137:30 | 70 | type tracker without call steps | params_flow.rb:137:29:137:30 | 70 | +| params_flow.rb:137:29:137:30 | 70 | type tracker without call steps with content element 0 | params_flow.rb:137:23:137:31 | synthetic splat argument | | params_flow.rb:137:29:137:30 | 70 | type tracker without call steps with content element 1 | params_flow.rb:137:10:137:43 | * ... | | params_flow.rb:137:29:137:30 | 70 | type tracker without call steps with content element 1 | params_flow.rb:137:11:137:43 | call to [] | | params_flow.rb:137:29:137:30 | 70 | type tracker without call steps with content element 1 | params_flow.rb:137:11:137:43 | synthetic splat argument | -| params_flow.rb:137:29:137:30 | 70 | type tracker without call steps with content splat position 0 | params_flow.rb:137:23:137:31 | synthetic splat argument | | params_flow.rb:137:34:137:42 | call to taint | type tracker with call steps with content element 2 | params_flow.rb:133:14:133:18 | *args | | params_flow.rb:137:34:137:42 | call to taint | type tracker without call steps | params_flow.rb:137:34:137:42 | call to taint | | params_flow.rb:137:34:137:42 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:137:10:137:43 | * ... | | params_flow.rb:137:34:137:42 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:137:11:137:43 | call to [] | | params_flow.rb:137:34:137:42 | call to taint | type tracker without call steps with content element 2 | params_flow.rb:137:11:137:43 | synthetic splat argument | -| params_flow.rb:137:34:137:42 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:137:34:137:42 | synthetic splat argument | type tracker without call steps | params_flow.rb:137:34:137:42 | synthetic splat argument | | params_flow.rb:137:40:137:41 | 71 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:137:40:137:41 | 71 | type tracker with call steps with content element 2 | params_flow.rb:133:14:133:18 | *args | -| params_flow.rb:137:40:137:41 | 71 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:137:40:137:41 | 71 | type tracker without call steps | params_flow.rb:137:34:137:42 | call to taint | | params_flow.rb:137:40:137:41 | 71 | type tracker without call steps | params_flow.rb:137:40:137:41 | 71 | +| params_flow.rb:137:40:137:41 | 71 | type tracker without call steps with content element 0 | params_flow.rb:137:34:137:42 | synthetic splat argument | | params_flow.rb:137:40:137:41 | 71 | type tracker without call steps with content element 2 | params_flow.rb:137:10:137:43 | * ... | | params_flow.rb:137:40:137:41 | 71 | type tracker without call steps with content element 2 | params_flow.rb:137:11:137:43 | call to [] | | params_flow.rb:137:40:137:41 | 71 | type tracker without call steps with content element 2 | params_flow.rb:137:11:137:43 | synthetic splat argument | -| params_flow.rb:137:40:137:41 | 71 | type tracker without call steps with content splat position 0 | params_flow.rb:137:34:137:42 | synthetic splat argument | | params_flow.rb:139:1:141:3 | &block | type tracker without call steps | params_flow.rb:139:1:141:3 | &block | | params_flow.rb:139:1:141:3 | hashSplatSideEffect | type tracker without call steps | params_flow.rb:139:1:141:3 | hashSplatSideEffect | | params_flow.rb:139:1:141:3 | self in hashSplatSideEffect | type tracker without call steps | params_flow.rb:139:1:141:3 | self in hashSplatSideEffect | @@ -2995,18 +2463,18 @@ track | params_flow.rb:140:5:140:38 | call to insert | type tracker without call steps | params_flow.rb:150:1:150:42 | call to hashSplatSideEffect | | params_flow.rb:140:5:140:38 | synthetic splat argument | type tracker without call steps | params_flow.rb:140:5:140:38 | synthetic splat argument | | params_flow.rb:140:12:140:14 | :p1 | type tracker without call steps | params_flow.rb:140:12:140:14 | :p1 | -| params_flow.rb:140:12:140:14 | :p1 | type tracker without call steps with content splat position 0 | params_flow.rb:140:5:140:15 | synthetic splat argument | +| params_flow.rb:140:12:140:14 | :p1 | type tracker without call steps with content element 0 | params_flow.rb:140:5:140:15 | synthetic splat argument | | params_flow.rb:140:24:140:24 | 0 | type tracker without call steps | params_flow.rb:140:24:140:24 | 0 | -| params_flow.rb:140:24:140:24 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:140:5:140:38 | synthetic splat argument | +| params_flow.rb:140:24:140:24 | 0 | type tracker without call steps with content element 0 | params_flow.rb:140:5:140:38 | synthetic splat argument | | params_flow.rb:140:27:140:37 | ...[...] | type tracker without call steps | params_flow.rb:140:27:140:37 | ...[...] | | params_flow.rb:140:27:140:37 | ...[...] | type tracker without call steps with content element 0 or unknown | params_flow.rb:140:5:140:15 | [post] ...[...] | | params_flow.rb:140:27:140:37 | ...[...] | type tracker without call steps with content element 0 or unknown | params_flow.rb:140:5:140:38 | call to insert | | params_flow.rb:140:27:140:37 | ...[...] | type tracker without call steps with content element 0 or unknown | params_flow.rb:145:1:145:29 | call to hashSplatSideEffect | | params_flow.rb:140:27:140:37 | ...[...] | type tracker without call steps with content element 0 or unknown | params_flow.rb:150:1:150:42 | call to hashSplatSideEffect | -| params_flow.rb:140:27:140:37 | ...[...] | type tracker without call steps with content splat position 1 | params_flow.rb:140:5:140:38 | synthetic splat argument | +| params_flow.rb:140:27:140:37 | ...[...] | type tracker without call steps with content element 1 | params_flow.rb:140:5:140:38 | synthetic splat argument | | params_flow.rb:140:27:140:37 | synthetic splat argument | type tracker without call steps | params_flow.rb:140:27:140:37 | synthetic splat argument | | params_flow.rb:140:34:140:36 | :p2 | type tracker without call steps | params_flow.rb:140:34:140:36 | :p2 | -| params_flow.rb:140:34:140:36 | :p2 | type tracker without call steps with content splat position 0 | params_flow.rb:140:27:140:37 | synthetic splat argument | +| params_flow.rb:140:34:140:36 | :p2 | type tracker without call steps with content element 0 | params_flow.rb:140:27:140:37 | synthetic splat argument | | params_flow.rb:143:1:143:6 | kwargs | type tracker without call steps | params_flow.rb:143:1:143:6 | kwargs | | params_flow.rb:143:10:143:34 | Hash | type tracker without call steps | params_flow.rb:143:10:143:34 | Hash | | params_flow.rb:143:10:143:34 | call to [] | type tracker without call steps | params_flow.rb:143:10:143:34 | call to [] | @@ -3028,77 +2496,69 @@ track | params_flow.rb:143:24:143:32 | call to taint | type tracker with call steps | params_flow.rb:140:27:140:37 | ...[...] | | params_flow.rb:143:24:143:32 | call to taint | type tracker with call steps with content element 0 or unknown | params_flow.rb:140:5:140:15 | [post] ...[...] | | params_flow.rb:143:24:143:32 | call to taint | type tracker with call steps with content element 0 or unknown | params_flow.rb:140:5:140:38 | call to insert | +| params_flow.rb:143:24:143:32 | call to taint | type tracker with call steps with content element 1 | params_flow.rb:140:5:140:38 | synthetic splat argument | | params_flow.rb:143:24:143:32 | call to taint | type tracker with call steps with content element :p2 | params_flow.rb:139:25:139:32 | **kwargs | -| params_flow.rb:143:24:143:32 | call to taint | type tracker with call steps with content splat position 1 | params_flow.rb:140:5:140:38 | synthetic splat argument | | params_flow.rb:143:24:143:32 | call to taint | type tracker without call steps | params_flow.rb:143:24:143:32 | call to taint | | params_flow.rb:143:24:143:32 | call to taint | type tracker without call steps with content element :p2 | params_flow.rb:143:10:143:34 | call to [] | | params_flow.rb:143:24:143:32 | call to taint | type tracker without call steps with content element :p2 | params_flow.rb:143:10:143:34 | synthetic hash-splat argument | | params_flow.rb:143:24:143:32 | call to taint | type tracker without call steps with content element :p2 | params_flow.rb:145:21:145:28 | ** ... | -| params_flow.rb:143:24:143:32 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:143:24:143:32 | synthetic splat argument | type tracker without call steps | params_flow.rb:143:24:143:32 | synthetic splat argument | | params_flow.rb:143:30:143:31 | 72 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:143:30:143:31 | 72 | type tracker with call steps | params_flow.rb:140:27:140:37 | ...[...] | | params_flow.rb:143:30:143:31 | 72 | type tracker with call steps with content element 0 or unknown | params_flow.rb:140:5:140:15 | [post] ...[...] | | params_flow.rb:143:30:143:31 | 72 | type tracker with call steps with content element 0 or unknown | params_flow.rb:140:5:140:38 | call to insert | +| params_flow.rb:143:30:143:31 | 72 | type tracker with call steps with content element 1 | params_flow.rb:140:5:140:38 | synthetic splat argument | | params_flow.rb:143:30:143:31 | 72 | type tracker with call steps with content element :p2 | params_flow.rb:139:25:139:32 | **kwargs | -| params_flow.rb:143:30:143:31 | 72 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:143:30:143:31 | 72 | type tracker with call steps with content splat position 1 | params_flow.rb:140:5:140:38 | synthetic splat argument | | params_flow.rb:143:30:143:31 | 72 | type tracker without call steps | params_flow.rb:143:24:143:32 | call to taint | | params_flow.rb:143:30:143:31 | 72 | type tracker without call steps | params_flow.rb:143:30:143:31 | 72 | +| params_flow.rb:143:30:143:31 | 72 | type tracker without call steps with content element 0 | params_flow.rb:143:24:143:32 | synthetic splat argument | | params_flow.rb:143:30:143:31 | 72 | type tracker without call steps with content element :p2 | params_flow.rb:143:10:143:34 | call to [] | | params_flow.rb:143:30:143:31 | 72 | type tracker without call steps with content element :p2 | params_flow.rb:143:10:143:34 | synthetic hash-splat argument | | params_flow.rb:143:30:143:31 | 72 | type tracker without call steps with content element :p2 | params_flow.rb:145:21:145:28 | ** ... | -| params_flow.rb:143:30:143:31 | 72 | type tracker without call steps with content splat position 0 | params_flow.rb:143:24:143:32 | synthetic splat argument | | params_flow.rb:144:1:144:20 | call to sink | type tracker without call steps | params_flow.rb:144:1:144:20 | call to sink | -| params_flow.rb:144:1:144:20 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:144:1:144:20 | synthetic splat argument | type tracker without call steps | params_flow.rb:144:1:144:20 | synthetic splat argument | | params_flow.rb:144:6:144:16 | ...[...] | type tracker without call steps | params_flow.rb:144:6:144:16 | ...[...] | | params_flow.rb:144:6:144:16 | synthetic splat argument | type tracker without call steps | params_flow.rb:144:6:144:16 | synthetic splat argument | | params_flow.rb:144:6:144:19 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:144:6:144:19 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:144:6:144:19 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:144:6:144:19 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:144:6:144:19 | ...[...] | type tracker without call steps | params_flow.rb:144:6:144:19 | ...[...] | -| params_flow.rb:144:6:144:19 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:144:1:144:20 | synthetic splat argument | +| params_flow.rb:144:6:144:19 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:144:1:144:20 | synthetic splat argument | | params_flow.rb:144:6:144:19 | synthetic splat argument | type tracker without call steps | params_flow.rb:144:6:144:19 | synthetic splat argument | | params_flow.rb:144:13:144:15 | :p1 | type tracker without call steps | params_flow.rb:144:13:144:15 | :p1 | -| params_flow.rb:144:13:144:15 | :p1 | type tracker without call steps with content splat position 0 | params_flow.rb:144:6:144:16 | synthetic splat argument | +| params_flow.rb:144:13:144:15 | :p1 | type tracker without call steps with content element 0 | params_flow.rb:144:6:144:16 | synthetic splat argument | | params_flow.rb:144:18:144:18 | 0 | type tracker without call steps | params_flow.rb:144:18:144:18 | 0 | -| params_flow.rb:144:18:144:18 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:144:6:144:19 | synthetic splat argument | +| params_flow.rb:144:18:144:18 | 0 | type tracker without call steps with content element 0 | params_flow.rb:144:6:144:19 | synthetic splat argument | | params_flow.rb:145:1:145:29 | call to hashSplatSideEffect | type tracker without call steps | params_flow.rb:145:1:145:29 | call to hashSplatSideEffect | | params_flow.rb:145:21:145:28 | ** ... | type tracker with call steps | params_flow.rb:139:25:139:32 | **kwargs | | params_flow.rb:145:21:145:28 | ** ... | type tracker without call steps | params_flow.rb:145:21:145:28 | ** ... | | params_flow.rb:146:1:146:20 | call to sink | type tracker without call steps | params_flow.rb:146:1:146:20 | call to sink | -| params_flow.rb:146:1:146:20 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:146:1:146:20 | synthetic splat argument | type tracker without call steps | params_flow.rb:146:1:146:20 | synthetic splat argument | | params_flow.rb:146:6:146:16 | ...[...] | type tracker without call steps | params_flow.rb:146:6:146:16 | ...[...] | | params_flow.rb:146:6:146:16 | synthetic splat argument | type tracker without call steps | params_flow.rb:146:6:146:16 | synthetic splat argument | | params_flow.rb:146:6:146:19 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:146:6:146:19 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:146:6:146:19 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:146:6:146:19 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:146:6:146:19 | ...[...] | type tracker without call steps | params_flow.rb:146:6:146:19 | ...[...] | -| params_flow.rb:146:6:146:19 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:146:1:146:20 | synthetic splat argument | +| params_flow.rb:146:6:146:19 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:146:1:146:20 | synthetic splat argument | | params_flow.rb:146:6:146:19 | synthetic splat argument | type tracker without call steps | params_flow.rb:146:6:146:19 | synthetic splat argument | | params_flow.rb:146:13:146:15 | :p1 | type tracker without call steps | params_flow.rb:146:13:146:15 | :p1 | -| params_flow.rb:146:13:146:15 | :p1 | type tracker without call steps with content splat position 0 | params_flow.rb:146:6:146:16 | synthetic splat argument | +| params_flow.rb:146:13:146:15 | :p1 | type tracker without call steps with content element 0 | params_flow.rb:146:6:146:16 | synthetic splat argument | | params_flow.rb:146:18:146:18 | 0 | type tracker without call steps | params_flow.rb:146:18:146:18 | 0 | -| params_flow.rb:146:18:146:18 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:146:6:146:19 | synthetic splat argument | +| params_flow.rb:146:18:146:18 | 0 | type tracker without call steps with content element 0 | params_flow.rb:146:6:146:19 | synthetic splat argument | | params_flow.rb:148:1:148:2 | p1 | type tracker without call steps | params_flow.rb:148:1:148:2 | p1 | | params_flow.rb:148:6:148:7 | Array | type tracker without call steps | params_flow.rb:148:6:148:7 | Array | | params_flow.rb:148:6:148:7 | call to [] | type tracker with call steps | params_flow.rb:140:5:140:15 | ...[...] | -| params_flow.rb:148:6:148:7 | call to [] | type tracker with call steps with content hash-splat position :p1 | params_flow.rb:139:25:139:32 | **kwargs | +| params_flow.rb:148:6:148:7 | call to [] | type tracker with call steps with content element :p1 | params_flow.rb:139:25:139:32 | **kwargs | | params_flow.rb:148:6:148:7 | call to [] | type tracker without call steps | params_flow.rb:148:6:148:7 | call to [] | -| params_flow.rb:148:6:148:7 | call to [] | type tracker without call steps with content hash-splat position :p1 | params_flow.rb:150:1:150:42 | synthetic hash-splat argument | +| params_flow.rb:148:6:148:7 | call to [] | type tracker without call steps with content element :p1 | params_flow.rb:150:1:150:42 | synthetic hash-splat argument | | params_flow.rb:149:1:149:11 | call to sink | type tracker without call steps | params_flow.rb:149:1:149:11 | call to sink | -| params_flow.rb:149:1:149:11 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:149:1:149:11 | synthetic splat argument | type tracker without call steps | params_flow.rb:149:1:149:11 | synthetic splat argument | | params_flow.rb:149:6:149:10 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:149:6:149:10 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:149:6:149:10 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:149:6:149:10 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:149:6:149:10 | ...[...] | type tracker without call steps | params_flow.rb:149:6:149:10 | ...[...] | -| params_flow.rb:149:6:149:10 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:149:1:149:11 | synthetic splat argument | +| params_flow.rb:149:6:149:10 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:149:1:149:11 | synthetic splat argument | | params_flow.rb:149:6:149:10 | synthetic splat argument | type tracker without call steps | params_flow.rb:149:6:149:10 | synthetic splat argument | | params_flow.rb:149:9:149:9 | 0 | type tracker without call steps | params_flow.rb:149:9:149:9 | 0 | -| params_flow.rb:149:9:149:9 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:149:6:149:10 | synthetic splat argument | +| params_flow.rb:149:9:149:9 | 0 | type tracker without call steps with content element 0 | params_flow.rb:149:6:149:10 | synthetic splat argument | | params_flow.rb:150:1:150:42 | call to hashSplatSideEffect | type tracker without call steps | params_flow.rb:150:1:150:42 | call to hashSplatSideEffect | | params_flow.rb:150:1:150:42 | synthetic hash-splat argument | type tracker with call steps | params_flow.rb:139:25:139:32 | **kwargs | | params_flow.rb:150:1:150:42 | synthetic hash-splat argument | type tracker without call steps | params_flow.rb:150:1:150:42 | synthetic hash-splat argument | @@ -3109,34 +2569,30 @@ track | params_flow.rb:150:33:150:41 | call to taint | type tracker with call steps | params_flow.rb:140:27:140:37 | ...[...] | | params_flow.rb:150:33:150:41 | call to taint | type tracker with call steps with content element 0 or unknown | params_flow.rb:140:5:140:15 | [post] ...[...] | | params_flow.rb:150:33:150:41 | call to taint | type tracker with call steps with content element 0 or unknown | params_flow.rb:140:5:140:38 | call to insert | -| params_flow.rb:150:33:150:41 | call to taint | type tracker with call steps with content hash-splat position :p2 | params_flow.rb:139:25:139:32 | **kwargs | -| params_flow.rb:150:33:150:41 | call to taint | type tracker with call steps with content splat position 1 | params_flow.rb:140:5:140:38 | synthetic splat argument | +| params_flow.rb:150:33:150:41 | call to taint | type tracker with call steps with content element 1 | params_flow.rb:140:5:140:38 | synthetic splat argument | +| params_flow.rb:150:33:150:41 | call to taint | type tracker with call steps with content element :p2 | params_flow.rb:139:25:139:32 | **kwargs | | params_flow.rb:150:33:150:41 | call to taint | type tracker without call steps | params_flow.rb:150:33:150:41 | call to taint | -| params_flow.rb:150:33:150:41 | call to taint | type tracker without call steps with content hash-splat position :p2 | params_flow.rb:150:1:150:42 | synthetic hash-splat argument | -| params_flow.rb:150:33:150:41 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:150:33:150:41 | call to taint | type tracker without call steps with content element :p2 | params_flow.rb:150:1:150:42 | synthetic hash-splat argument | | params_flow.rb:150:33:150:41 | synthetic splat argument | type tracker without call steps | params_flow.rb:150:33:150:41 | synthetic splat argument | | params_flow.rb:150:39:150:40 | 73 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:150:39:150:40 | 73 | type tracker with call steps | params_flow.rb:140:27:140:37 | ...[...] | | params_flow.rb:150:39:150:40 | 73 | type tracker with call steps with content element 0 or unknown | params_flow.rb:140:5:140:15 | [post] ...[...] | | params_flow.rb:150:39:150:40 | 73 | type tracker with call steps with content element 0 or unknown | params_flow.rb:140:5:140:38 | call to insert | -| params_flow.rb:150:39:150:40 | 73 | type tracker with call steps with content hash-splat position :p2 | params_flow.rb:139:25:139:32 | **kwargs | -| params_flow.rb:150:39:150:40 | 73 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:150:39:150:40 | 73 | type tracker with call steps with content splat position 1 | params_flow.rb:140:5:140:38 | synthetic splat argument | +| params_flow.rb:150:39:150:40 | 73 | type tracker with call steps with content element 1 | params_flow.rb:140:5:140:38 | synthetic splat argument | +| params_flow.rb:150:39:150:40 | 73 | type tracker with call steps with content element :p2 | params_flow.rb:139:25:139:32 | **kwargs | | params_flow.rb:150:39:150:40 | 73 | type tracker without call steps | params_flow.rb:150:33:150:41 | call to taint | | params_flow.rb:150:39:150:40 | 73 | type tracker without call steps | params_flow.rb:150:39:150:40 | 73 | -| params_flow.rb:150:39:150:40 | 73 | type tracker without call steps with content hash-splat position :p2 | params_flow.rb:150:1:150:42 | synthetic hash-splat argument | -| params_flow.rb:150:39:150:40 | 73 | type tracker without call steps with content splat position 0 | params_flow.rb:150:33:150:41 | synthetic splat argument | +| params_flow.rb:150:39:150:40 | 73 | type tracker without call steps with content element 0 | params_flow.rb:150:33:150:41 | synthetic splat argument | +| params_flow.rb:150:39:150:40 | 73 | type tracker without call steps with content element :p2 | params_flow.rb:150:1:150:42 | synthetic hash-splat argument | | params_flow.rb:151:1:151:11 | call to sink | type tracker without call steps | params_flow.rb:151:1:151:11 | call to sink | -| params_flow.rb:151:1:151:11 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:151:1:151:11 | synthetic splat argument | type tracker without call steps | params_flow.rb:151:1:151:11 | synthetic splat argument | | params_flow.rb:151:6:151:10 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:151:6:151:10 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:151:6:151:10 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:151:6:151:10 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:151:6:151:10 | ...[...] | type tracker without call steps | params_flow.rb:151:6:151:10 | ...[...] | -| params_flow.rb:151:6:151:10 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:151:1:151:11 | synthetic splat argument | +| params_flow.rb:151:6:151:10 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:151:1:151:11 | synthetic splat argument | | params_flow.rb:151:6:151:10 | synthetic splat argument | type tracker without call steps | params_flow.rb:151:6:151:10 | synthetic splat argument | | params_flow.rb:151:9:151:9 | 0 | type tracker without call steps | params_flow.rb:151:9:151:9 | 0 | -| params_flow.rb:151:9:151:9 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:151:6:151:10 | synthetic splat argument | +| params_flow.rb:151:9:151:9 | 0 | type tracker without call steps with content element 0 | params_flow.rb:151:6:151:10 | synthetic splat argument | | params_flow.rb:153:1:155:3 | &block | type tracker without call steps | params_flow.rb:153:1:155:3 | &block | | params_flow.rb:153:1:155:3 | keywordSideEffect | type tracker without call steps | params_flow.rb:153:1:155:3 | keywordSideEffect | | params_flow.rb:153:1:155:3 | self in keywordSideEffect | type tracker without call steps | params_flow.rb:153:1:155:3 | self in keywordSideEffect | @@ -3149,14 +2605,14 @@ track | params_flow.rb:153:28:153:29 | p2 | type tracker without call steps with content element 0 or unknown | params_flow.rb:154:5:154:20 | call to insert | | params_flow.rb:153:28:153:29 | p2 | type tracker without call steps with content element 0 or unknown | params_flow.rb:159:1:159:27 | call to keywordSideEffect | | params_flow.rb:153:28:153:29 | p2 | type tracker without call steps with content element 0 or unknown | params_flow.rb:164:1:164:40 | call to keywordSideEffect | -| params_flow.rb:153:28:153:29 | p2 | type tracker without call steps with content splat position 1 | params_flow.rb:154:5:154:20 | synthetic splat argument | +| params_flow.rb:153:28:153:29 | p2 | type tracker without call steps with content element 1 | params_flow.rb:154:5:154:20 | synthetic splat argument | | params_flow.rb:154:5:154:6 | [post] p1 | type tracker without call steps | params_flow.rb:154:5:154:6 | [post] p1 | | params_flow.rb:154:5:154:20 | call to insert | type tracker without call steps | params_flow.rb:154:5:154:20 | call to insert | | params_flow.rb:154:5:154:20 | call to insert | type tracker without call steps | params_flow.rb:159:1:159:27 | call to keywordSideEffect | | params_flow.rb:154:5:154:20 | call to insert | type tracker without call steps | params_flow.rb:164:1:164:40 | call to keywordSideEffect | | params_flow.rb:154:5:154:20 | synthetic splat argument | type tracker without call steps | params_flow.rb:154:5:154:20 | synthetic splat argument | | params_flow.rb:154:15:154:15 | 0 | type tracker without call steps | params_flow.rb:154:15:154:15 | 0 | -| params_flow.rb:154:15:154:15 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:154:5:154:20 | synthetic splat argument | +| params_flow.rb:154:15:154:15 | 0 | type tracker without call steps with content element 0 | params_flow.rb:154:5:154:20 | synthetic splat argument | | params_flow.rb:157:1:157:6 | kwargs | type tracker without call steps | params_flow.rb:157:1:157:6 | kwargs | | params_flow.rb:157:10:157:34 | Hash | type tracker without call steps | params_flow.rb:157:10:157:34 | Hash | | params_flow.rb:157:10:157:34 | call to [] | type tracker without call steps | params_flow.rb:157:10:157:34 | call to [] | @@ -3178,79 +2634,69 @@ track | params_flow.rb:157:24:157:32 | call to taint | type tracker with call steps | params_flow.rb:153:28:153:29 | p2 | | params_flow.rb:157:24:157:32 | call to taint | type tracker with call steps with content element 0 or unknown | params_flow.rb:154:5:154:6 | [post] p1 | | params_flow.rb:157:24:157:32 | call to taint | type tracker with call steps with content element 0 or unknown | params_flow.rb:154:5:154:20 | call to insert | +| params_flow.rb:157:24:157:32 | call to taint | type tracker with call steps with content element 1 | params_flow.rb:154:5:154:20 | synthetic splat argument | | params_flow.rb:157:24:157:32 | call to taint | type tracker with call steps with content element :p2 | params_flow.rb:153:1:155:3 | synthetic hash-splat parameter | -| params_flow.rb:157:24:157:32 | call to taint | type tracker with call steps with content splat position 1 | params_flow.rb:154:5:154:20 | synthetic splat argument | | params_flow.rb:157:24:157:32 | call to taint | type tracker without call steps | params_flow.rb:157:24:157:32 | call to taint | | params_flow.rb:157:24:157:32 | call to taint | type tracker without call steps with content element :p2 | params_flow.rb:157:10:157:34 | call to [] | | params_flow.rb:157:24:157:32 | call to taint | type tracker without call steps with content element :p2 | params_flow.rb:157:10:157:34 | synthetic hash-splat argument | | params_flow.rb:157:24:157:32 | call to taint | type tracker without call steps with content element :p2 | params_flow.rb:159:19:159:26 | ** ... | -| params_flow.rb:157:24:157:32 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:157:24:157:32 | synthetic splat argument | type tracker without call steps | params_flow.rb:157:24:157:32 | synthetic splat argument | | params_flow.rb:157:30:157:31 | 74 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:157:30:157:31 | 74 | type tracker with call steps | params_flow.rb:153:28:153:29 | p2 | | params_flow.rb:157:30:157:31 | 74 | type tracker with call steps with content element 0 or unknown | params_flow.rb:154:5:154:6 | [post] p1 | | params_flow.rb:157:30:157:31 | 74 | type tracker with call steps with content element 0 or unknown | params_flow.rb:154:5:154:20 | call to insert | +| params_flow.rb:157:30:157:31 | 74 | type tracker with call steps with content element 1 | params_flow.rb:154:5:154:20 | synthetic splat argument | | params_flow.rb:157:30:157:31 | 74 | type tracker with call steps with content element :p2 | params_flow.rb:153:1:155:3 | synthetic hash-splat parameter | -| params_flow.rb:157:30:157:31 | 74 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:157:30:157:31 | 74 | type tracker with call steps with content splat position 1 | params_flow.rb:154:5:154:20 | synthetic splat argument | | params_flow.rb:157:30:157:31 | 74 | type tracker without call steps | params_flow.rb:157:24:157:32 | call to taint | | params_flow.rb:157:30:157:31 | 74 | type tracker without call steps | params_flow.rb:157:30:157:31 | 74 | +| params_flow.rb:157:30:157:31 | 74 | type tracker without call steps with content element 0 | params_flow.rb:157:24:157:32 | synthetic splat argument | | params_flow.rb:157:30:157:31 | 74 | type tracker without call steps with content element :p2 | params_flow.rb:157:10:157:34 | call to [] | | params_flow.rb:157:30:157:31 | 74 | type tracker without call steps with content element :p2 | params_flow.rb:157:10:157:34 | synthetic hash-splat argument | | params_flow.rb:157:30:157:31 | 74 | type tracker without call steps with content element :p2 | params_flow.rb:159:19:159:26 | ** ... | -| params_flow.rb:157:30:157:31 | 74 | type tracker without call steps with content splat position 0 | params_flow.rb:157:24:157:32 | synthetic splat argument | | params_flow.rb:158:1:158:20 | call to sink | type tracker without call steps | params_flow.rb:158:1:158:20 | call to sink | -| params_flow.rb:158:1:158:20 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:158:1:158:20 | synthetic splat argument | type tracker without call steps | params_flow.rb:158:1:158:20 | synthetic splat argument | | params_flow.rb:158:6:158:16 | ...[...] | type tracker without call steps | params_flow.rb:158:6:158:16 | ...[...] | | params_flow.rb:158:6:158:16 | synthetic splat argument | type tracker without call steps | params_flow.rb:158:6:158:16 | synthetic splat argument | | params_flow.rb:158:6:158:19 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:158:6:158:19 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:158:6:158:19 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:158:6:158:19 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:158:6:158:19 | ...[...] | type tracker without call steps | params_flow.rb:158:6:158:19 | ...[...] | -| params_flow.rb:158:6:158:19 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:158:1:158:20 | synthetic splat argument | +| params_flow.rb:158:6:158:19 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:158:1:158:20 | synthetic splat argument | | params_flow.rb:158:6:158:19 | synthetic splat argument | type tracker without call steps | params_flow.rb:158:6:158:19 | synthetic splat argument | | params_flow.rb:158:13:158:15 | :p1 | type tracker without call steps | params_flow.rb:158:13:158:15 | :p1 | -| params_flow.rb:158:13:158:15 | :p1 | type tracker without call steps with content splat position 0 | params_flow.rb:158:6:158:16 | synthetic splat argument | +| params_flow.rb:158:13:158:15 | :p1 | type tracker without call steps with content element 0 | params_flow.rb:158:6:158:16 | synthetic splat argument | | params_flow.rb:158:18:158:18 | 0 | type tracker without call steps | params_flow.rb:158:18:158:18 | 0 | -| params_flow.rb:158:18:158:18 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:158:6:158:19 | synthetic splat argument | +| params_flow.rb:158:18:158:18 | 0 | type tracker without call steps with content element 0 | params_flow.rb:158:6:158:19 | synthetic splat argument | | params_flow.rb:159:1:159:27 | call to keywordSideEffect | type tracker without call steps | params_flow.rb:159:1:159:27 | call to keywordSideEffect | | params_flow.rb:159:19:159:26 | ** ... | type tracker with call steps | params_flow.rb:153:1:155:3 | synthetic hash-splat parameter | | params_flow.rb:159:19:159:26 | ** ... | type tracker without call steps | params_flow.rb:159:19:159:26 | ** ... | | params_flow.rb:160:1:160:20 | call to sink | type tracker without call steps | params_flow.rb:160:1:160:20 | call to sink | -| params_flow.rb:160:1:160:20 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:160:1:160:20 | synthetic splat argument | type tracker without call steps | params_flow.rb:160:1:160:20 | synthetic splat argument | | params_flow.rb:160:6:160:16 | ...[...] | type tracker without call steps | params_flow.rb:160:6:160:16 | ...[...] | | params_flow.rb:160:6:160:16 | synthetic splat argument | type tracker without call steps | params_flow.rb:160:6:160:16 | synthetic splat argument | | params_flow.rb:160:6:160:19 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:160:6:160:19 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:160:6:160:19 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:160:6:160:19 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:160:6:160:19 | ...[...] | type tracker without call steps | params_flow.rb:160:6:160:19 | ...[...] | -| params_flow.rb:160:6:160:19 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:160:1:160:20 | synthetic splat argument | +| params_flow.rb:160:6:160:19 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:160:1:160:20 | synthetic splat argument | | params_flow.rb:160:6:160:19 | synthetic splat argument | type tracker without call steps | params_flow.rb:160:6:160:19 | synthetic splat argument | | params_flow.rb:160:13:160:15 | :p1 | type tracker without call steps | params_flow.rb:160:13:160:15 | :p1 | -| params_flow.rb:160:13:160:15 | :p1 | type tracker without call steps with content splat position 0 | params_flow.rb:160:6:160:16 | synthetic splat argument | +| params_flow.rb:160:13:160:15 | :p1 | type tracker without call steps with content element 0 | params_flow.rb:160:6:160:16 | synthetic splat argument | | params_flow.rb:160:18:160:18 | 0 | type tracker without call steps | params_flow.rb:160:18:160:18 | 0 | -| params_flow.rb:160:18:160:18 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:160:6:160:19 | synthetic splat argument | +| params_flow.rb:160:18:160:18 | 0 | type tracker without call steps with content element 0 | params_flow.rb:160:6:160:19 | synthetic splat argument | | params_flow.rb:162:1:162:2 | p1 | type tracker without call steps | params_flow.rb:162:1:162:2 | p1 | | params_flow.rb:162:6:162:7 | Array | type tracker without call steps | params_flow.rb:162:6:162:7 | Array | | params_flow.rb:162:6:162:7 | call to [] | type tracker with call steps | params_flow.rb:153:23:153:24 | p1 | -| params_flow.rb:162:6:162:7 | call to [] | type tracker with call steps with content hash-splat position :p1 | params_flow.rb:153:1:155:3 | synthetic hash-splat parameter | | params_flow.rb:162:6:162:7 | call to [] | type tracker without call steps | params_flow.rb:162:6:162:7 | call to [] | -| params_flow.rb:162:6:162:7 | call to [] | type tracker without call steps with content hash-splat position :p1 | params_flow.rb:164:1:164:40 | synthetic hash-splat argument | +| params_flow.rb:162:6:162:7 | call to [] | type tracker without call steps with content element :p1 | params_flow.rb:164:1:164:40 | synthetic hash-splat argument | | params_flow.rb:163:1:163:11 | call to sink | type tracker without call steps | params_flow.rb:163:1:163:11 | call to sink | -| params_flow.rb:163:1:163:11 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:163:1:163:11 | synthetic splat argument | type tracker without call steps | params_flow.rb:163:1:163:11 | synthetic splat argument | | params_flow.rb:163:6:163:10 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:163:6:163:10 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:163:6:163:10 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:163:6:163:10 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:163:6:163:10 | ...[...] | type tracker without call steps | params_flow.rb:163:6:163:10 | ...[...] | -| params_flow.rb:163:6:163:10 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:163:1:163:11 | synthetic splat argument | +| params_flow.rb:163:6:163:10 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:163:1:163:11 | synthetic splat argument | | params_flow.rb:163:6:163:10 | synthetic splat argument | type tracker without call steps | params_flow.rb:163:6:163:10 | synthetic splat argument | | params_flow.rb:163:9:163:9 | 0 | type tracker without call steps | params_flow.rb:163:9:163:9 | 0 | -| params_flow.rb:163:9:163:9 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:163:6:163:10 | synthetic splat argument | +| params_flow.rb:163:9:163:9 | 0 | type tracker without call steps with content element 0 | params_flow.rb:163:6:163:10 | synthetic splat argument | | params_flow.rb:164:1:164:40 | call to keywordSideEffect | type tracker without call steps | params_flow.rb:164:1:164:40 | call to keywordSideEffect | -| params_flow.rb:164:1:164:40 | synthetic hash-splat argument | type tracker with call steps | params_flow.rb:153:1:155:3 | synthetic hash-splat parameter | | params_flow.rb:164:1:164:40 | synthetic hash-splat argument | type tracker without call steps | params_flow.rb:164:1:164:40 | synthetic hash-splat argument | | params_flow.rb:164:19:164:20 | :p1 | type tracker without call steps | params_flow.rb:164:19:164:20 | :p1 | | params_flow.rb:164:19:164:24 | Pair | type tracker without call steps | params_flow.rb:164:19:164:24 | Pair | @@ -3259,34 +2705,28 @@ track | params_flow.rb:164:31:164:39 | call to taint | type tracker with call steps | params_flow.rb:153:28:153:29 | p2 | | params_flow.rb:164:31:164:39 | call to taint | type tracker with call steps with content element 0 or unknown | params_flow.rb:154:5:154:6 | [post] p1 | | params_flow.rb:164:31:164:39 | call to taint | type tracker with call steps with content element 0 or unknown | params_flow.rb:154:5:154:20 | call to insert | -| params_flow.rb:164:31:164:39 | call to taint | type tracker with call steps with content hash-splat position :p2 | params_flow.rb:153:1:155:3 | synthetic hash-splat parameter | -| params_flow.rb:164:31:164:39 | call to taint | type tracker with call steps with content splat position 1 | params_flow.rb:154:5:154:20 | synthetic splat argument | +| params_flow.rb:164:31:164:39 | call to taint | type tracker with call steps with content element 1 | params_flow.rb:154:5:154:20 | synthetic splat argument | | params_flow.rb:164:31:164:39 | call to taint | type tracker without call steps | params_flow.rb:164:31:164:39 | call to taint | -| params_flow.rb:164:31:164:39 | call to taint | type tracker without call steps with content hash-splat position :p2 | params_flow.rb:164:1:164:40 | synthetic hash-splat argument | -| params_flow.rb:164:31:164:39 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:164:31:164:39 | call to taint | type tracker without call steps with content element :p2 | params_flow.rb:164:1:164:40 | synthetic hash-splat argument | | params_flow.rb:164:31:164:39 | synthetic splat argument | type tracker without call steps | params_flow.rb:164:31:164:39 | synthetic splat argument | | params_flow.rb:164:37:164:38 | 75 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:164:37:164:38 | 75 | type tracker with call steps | params_flow.rb:153:28:153:29 | p2 | | params_flow.rb:164:37:164:38 | 75 | type tracker with call steps with content element 0 or unknown | params_flow.rb:154:5:154:6 | [post] p1 | | params_flow.rb:164:37:164:38 | 75 | type tracker with call steps with content element 0 or unknown | params_flow.rb:154:5:154:20 | call to insert | -| params_flow.rb:164:37:164:38 | 75 | type tracker with call steps with content hash-splat position :p2 | params_flow.rb:153:1:155:3 | synthetic hash-splat parameter | -| params_flow.rb:164:37:164:38 | 75 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:164:37:164:38 | 75 | type tracker with call steps with content splat position 1 | params_flow.rb:154:5:154:20 | synthetic splat argument | +| params_flow.rb:164:37:164:38 | 75 | type tracker with call steps with content element 1 | params_flow.rb:154:5:154:20 | synthetic splat argument | | params_flow.rb:164:37:164:38 | 75 | type tracker without call steps | params_flow.rb:164:31:164:39 | call to taint | | params_flow.rb:164:37:164:38 | 75 | type tracker without call steps | params_flow.rb:164:37:164:38 | 75 | -| params_flow.rb:164:37:164:38 | 75 | type tracker without call steps with content hash-splat position :p2 | params_flow.rb:164:1:164:40 | synthetic hash-splat argument | -| params_flow.rb:164:37:164:38 | 75 | type tracker without call steps with content splat position 0 | params_flow.rb:164:31:164:39 | synthetic splat argument | +| params_flow.rb:164:37:164:38 | 75 | type tracker without call steps with content element 0 | params_flow.rb:164:31:164:39 | synthetic splat argument | +| params_flow.rb:164:37:164:38 | 75 | type tracker without call steps with content element :p2 | params_flow.rb:164:1:164:40 | synthetic hash-splat argument | | params_flow.rb:165:1:165:11 | call to sink | type tracker without call steps | params_flow.rb:165:1:165:11 | call to sink | -| params_flow.rb:165:1:165:11 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:165:1:165:11 | synthetic splat argument | type tracker without call steps | params_flow.rb:165:1:165:11 | synthetic splat argument | | params_flow.rb:165:6:165:10 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:165:6:165:10 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:165:6:165:10 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:165:6:165:10 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:165:6:165:10 | ...[...] | type tracker without call steps | params_flow.rb:165:6:165:10 | ...[...] | -| params_flow.rb:165:6:165:10 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:165:1:165:11 | synthetic splat argument | +| params_flow.rb:165:6:165:10 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:165:1:165:11 | synthetic splat argument | | params_flow.rb:165:6:165:10 | synthetic splat argument | type tracker without call steps | params_flow.rb:165:6:165:10 | synthetic splat argument | | params_flow.rb:165:9:165:9 | 0 | type tracker without call steps | params_flow.rb:165:9:165:9 | 0 | -| params_flow.rb:165:9:165:9 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:165:6:165:10 | synthetic splat argument | +| params_flow.rb:165:9:165:9 | 0 | type tracker without call steps with content element 0 | params_flow.rb:165:6:165:10 | synthetic splat argument | | params_flow.rb:167:1:169:3 | &block | type tracker without call steps | params_flow.rb:167:1:169:3 | &block | | params_flow.rb:167:1:169:3 | self in splatSideEffect | type tracker without call steps | params_flow.rb:167:1:169:3 | self in splatSideEffect | | params_flow.rb:167:1:169:3 | splatSideEffect | type tracker without call steps | params_flow.rb:167:1:169:3 | splatSideEffect | @@ -3300,18 +2740,18 @@ track | params_flow.rb:168:5:168:36 | call to insert | type tracker without call steps | params_flow.rb:178:1:178:30 | call to splatSideEffect | | params_flow.rb:168:5:168:36 | synthetic splat argument | type tracker without call steps | params_flow.rb:168:5:168:36 | synthetic splat argument | | params_flow.rb:168:13:168:13 | 0 | type tracker without call steps | params_flow.rb:168:13:168:13 | 0 | -| params_flow.rb:168:13:168:13 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:168:5:168:14 | synthetic splat argument | +| params_flow.rb:168:13:168:13 | 0 | type tracker without call steps with content element 0 | params_flow.rb:168:5:168:14 | synthetic splat argument | | params_flow.rb:168:23:168:23 | 0 | type tracker without call steps | params_flow.rb:168:23:168:23 | 0 | -| params_flow.rb:168:23:168:23 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:168:5:168:36 | synthetic splat argument | +| params_flow.rb:168:23:168:23 | 0 | type tracker without call steps with content element 0 | params_flow.rb:168:5:168:36 | synthetic splat argument | | params_flow.rb:168:26:168:35 | ...[...] | type tracker without call steps | params_flow.rb:168:26:168:35 | ...[...] | | params_flow.rb:168:26:168:35 | ...[...] | type tracker without call steps with content element 0 or unknown | params_flow.rb:168:5:168:14 | [post] ...[...] | | params_flow.rb:168:26:168:35 | ...[...] | type tracker without call steps with content element 0 or unknown | params_flow.rb:168:5:168:36 | call to insert | | params_flow.rb:168:26:168:35 | ...[...] | type tracker without call steps with content element 0 or unknown | params_flow.rb:173:1:173:25 | call to splatSideEffect | | params_flow.rb:168:26:168:35 | ...[...] | type tracker without call steps with content element 0 or unknown | params_flow.rb:178:1:178:30 | call to splatSideEffect | -| params_flow.rb:168:26:168:35 | ...[...] | type tracker without call steps with content splat position 1 | params_flow.rb:168:5:168:36 | synthetic splat argument | +| params_flow.rb:168:26:168:35 | ...[...] | type tracker without call steps with content element 1 | params_flow.rb:168:5:168:36 | synthetic splat argument | | params_flow.rb:168:26:168:35 | synthetic splat argument | type tracker without call steps | params_flow.rb:168:26:168:35 | synthetic splat argument | | params_flow.rb:168:34:168:34 | 1 | type tracker without call steps | params_flow.rb:168:34:168:34 | 1 | -| params_flow.rb:168:34:168:34 | 1 | type tracker without call steps with content splat position 0 | params_flow.rb:168:26:168:35 | synthetic splat argument | +| params_flow.rb:168:34:168:34 | 1 | type tracker without call steps with content element 0 | params_flow.rb:168:26:168:35 | synthetic splat argument | | params_flow.rb:171:1:171:7 | posargs | type tracker without call steps | params_flow.rb:171:1:171:7 | posargs | | params_flow.rb:171:11:171:27 | Array | type tracker without call steps | params_flow.rb:171:11:171:27 | Array | | params_flow.rb:171:11:171:27 | call to [] | type tracker with call steps | params_flow.rb:168:5:168:14 | ...[...] | @@ -3336,110 +2776,98 @@ track | params_flow.rb:171:17:171:25 | call to taint | type tracker with call steps with content element 0 or unknown | params_flow.rb:168:5:168:14 | [post] ...[...] | | params_flow.rb:171:17:171:25 | call to taint | type tracker with call steps with content element 0 or unknown | params_flow.rb:168:5:168:36 | call to insert | | params_flow.rb:171:17:171:25 | call to taint | type tracker with call steps with content element 1 | params_flow.rb:167:21:167:28 | *posargs | -| params_flow.rb:171:17:171:25 | call to taint | type tracker with call steps with content splat position 1 | params_flow.rb:168:5:168:36 | synthetic splat argument | +| params_flow.rb:171:17:171:25 | call to taint | type tracker with call steps with content element 1 | params_flow.rb:168:5:168:36 | synthetic splat argument | | params_flow.rb:171:17:171:25 | call to taint | type tracker without call steps | params_flow.rb:171:17:171:25 | call to taint | | params_flow.rb:171:17:171:25 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:171:11:171:27 | call to [] | | params_flow.rb:171:17:171:25 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:171:11:171:27 | synthetic splat argument | | params_flow.rb:171:17:171:25 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:173:17:173:24 | * ... | -| params_flow.rb:171:17:171:25 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:171:17:171:25 | synthetic splat argument | type tracker without call steps | params_flow.rb:171:17:171:25 | synthetic splat argument | | params_flow.rb:171:23:171:24 | 76 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:171:23:171:24 | 76 | type tracker with call steps | params_flow.rb:168:26:168:35 | ...[...] | | params_flow.rb:171:23:171:24 | 76 | type tracker with call steps with content element 0 or unknown | params_flow.rb:168:5:168:14 | [post] ...[...] | | params_flow.rb:171:23:171:24 | 76 | type tracker with call steps with content element 0 or unknown | params_flow.rb:168:5:168:36 | call to insert | | params_flow.rb:171:23:171:24 | 76 | type tracker with call steps with content element 1 | params_flow.rb:167:21:167:28 | *posargs | -| params_flow.rb:171:23:171:24 | 76 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:171:23:171:24 | 76 | type tracker with call steps with content splat position 1 | params_flow.rb:168:5:168:36 | synthetic splat argument | +| params_flow.rb:171:23:171:24 | 76 | type tracker with call steps with content element 1 | params_flow.rb:168:5:168:36 | synthetic splat argument | | params_flow.rb:171:23:171:24 | 76 | type tracker without call steps | params_flow.rb:171:17:171:25 | call to taint | | params_flow.rb:171:23:171:24 | 76 | type tracker without call steps | params_flow.rb:171:23:171:24 | 76 | +| params_flow.rb:171:23:171:24 | 76 | type tracker without call steps with content element 0 | params_flow.rb:171:17:171:25 | synthetic splat argument | | params_flow.rb:171:23:171:24 | 76 | type tracker without call steps with content element 1 | params_flow.rb:171:11:171:27 | call to [] | | params_flow.rb:171:23:171:24 | 76 | type tracker without call steps with content element 1 | params_flow.rb:171:11:171:27 | synthetic splat argument | | params_flow.rb:171:23:171:24 | 76 | type tracker without call steps with content element 1 | params_flow.rb:173:17:173:24 | * ... | -| params_flow.rb:171:23:171:24 | 76 | type tracker without call steps with content splat position 0 | params_flow.rb:171:17:171:25 | synthetic splat argument | | params_flow.rb:172:1:172:19 | call to sink | type tracker without call steps | params_flow.rb:172:1:172:19 | call to sink | -| params_flow.rb:172:1:172:19 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:172:1:172:19 | synthetic splat argument | type tracker without call steps | params_flow.rb:172:1:172:19 | synthetic splat argument | | params_flow.rb:172:6:172:15 | ...[...] | type tracker without call steps | params_flow.rb:172:6:172:15 | ...[...] | | params_flow.rb:172:6:172:15 | synthetic splat argument | type tracker without call steps | params_flow.rb:172:6:172:15 | synthetic splat argument | | params_flow.rb:172:6:172:18 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:172:6:172:18 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:172:6:172:18 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:172:6:172:18 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:172:6:172:18 | ...[...] | type tracker without call steps | params_flow.rb:172:6:172:18 | ...[...] | -| params_flow.rb:172:6:172:18 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:172:1:172:19 | synthetic splat argument | +| params_flow.rb:172:6:172:18 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:172:1:172:19 | synthetic splat argument | | params_flow.rb:172:6:172:18 | synthetic splat argument | type tracker without call steps | params_flow.rb:172:6:172:18 | synthetic splat argument | | params_flow.rb:172:14:172:14 | 0 | type tracker without call steps | params_flow.rb:172:14:172:14 | 0 | -| params_flow.rb:172:14:172:14 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:172:6:172:15 | synthetic splat argument | +| params_flow.rb:172:14:172:14 | 0 | type tracker without call steps with content element 0 | params_flow.rb:172:6:172:15 | synthetic splat argument | | params_flow.rb:172:17:172:17 | 0 | type tracker without call steps | params_flow.rb:172:17:172:17 | 0 | -| params_flow.rb:172:17:172:17 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:172:6:172:18 | synthetic splat argument | +| params_flow.rb:172:17:172:17 | 0 | type tracker without call steps with content element 0 | params_flow.rb:172:6:172:18 | synthetic splat argument | | params_flow.rb:173:1:173:25 | call to splatSideEffect | type tracker without call steps | params_flow.rb:173:1:173:25 | call to splatSideEffect | | params_flow.rb:173:17:173:24 | * ... | type tracker with call steps | params_flow.rb:167:21:167:28 | *posargs | | params_flow.rb:173:17:173:24 | * ... | type tracker without call steps | params_flow.rb:173:17:173:24 | * ... | | params_flow.rb:174:1:174:19 | call to sink | type tracker without call steps | params_flow.rb:174:1:174:19 | call to sink | -| params_flow.rb:174:1:174:19 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:174:1:174:19 | synthetic splat argument | type tracker without call steps | params_flow.rb:174:1:174:19 | synthetic splat argument | | params_flow.rb:174:6:174:15 | ...[...] | type tracker without call steps | params_flow.rb:174:6:174:15 | ...[...] | | params_flow.rb:174:6:174:15 | synthetic splat argument | type tracker without call steps | params_flow.rb:174:6:174:15 | synthetic splat argument | | params_flow.rb:174:6:174:18 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:174:6:174:18 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:174:6:174:18 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:174:6:174:18 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:174:6:174:18 | ...[...] | type tracker without call steps | params_flow.rb:174:6:174:18 | ...[...] | -| params_flow.rb:174:6:174:18 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:174:1:174:19 | synthetic splat argument | +| params_flow.rb:174:6:174:18 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:174:1:174:19 | synthetic splat argument | | params_flow.rb:174:6:174:18 | synthetic splat argument | type tracker without call steps | params_flow.rb:174:6:174:18 | synthetic splat argument | | params_flow.rb:174:14:174:14 | 0 | type tracker without call steps | params_flow.rb:174:14:174:14 | 0 | -| params_flow.rb:174:14:174:14 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:174:6:174:15 | synthetic splat argument | +| params_flow.rb:174:14:174:14 | 0 | type tracker without call steps with content element 0 | params_flow.rb:174:6:174:15 | synthetic splat argument | | params_flow.rb:174:17:174:17 | 0 | type tracker without call steps | params_flow.rb:174:17:174:17 | 0 | -| params_flow.rb:174:17:174:17 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:174:6:174:18 | synthetic splat argument | +| params_flow.rb:174:17:174:17 | 0 | type tracker without call steps with content element 0 | params_flow.rb:174:6:174:18 | synthetic splat argument | | params_flow.rb:176:1:176:2 | p1 | type tracker without call steps | params_flow.rb:176:1:176:2 | p1 | | params_flow.rb:176:6:176:7 | Array | type tracker without call steps | params_flow.rb:176:6:176:7 | Array | | params_flow.rb:176:6:176:7 | call to [] | type tracker with call steps | params_flow.rb:168:5:168:14 | ...[...] | -| params_flow.rb:176:6:176:7 | call to [] | type tracker with call steps with content splat position 0 | params_flow.rb:167:21:167:28 | *posargs | +| params_flow.rb:176:6:176:7 | call to [] | type tracker with call steps with content element 0 | params_flow.rb:167:21:167:28 | *posargs | | params_flow.rb:176:6:176:7 | call to [] | type tracker without call steps | params_flow.rb:176:6:176:7 | call to [] | -| params_flow.rb:176:6:176:7 | call to [] | type tracker without call steps with content splat position 0 | params_flow.rb:178:1:178:30 | synthetic splat argument | +| params_flow.rb:176:6:176:7 | call to [] | type tracker without call steps with content element 0 | params_flow.rb:178:1:178:30 | synthetic splat argument | | params_flow.rb:177:1:177:11 | call to sink | type tracker without call steps | params_flow.rb:177:1:177:11 | call to sink | -| params_flow.rb:177:1:177:11 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:177:1:177:11 | synthetic splat argument | type tracker without call steps | params_flow.rb:177:1:177:11 | synthetic splat argument | | params_flow.rb:177:6:177:10 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:177:6:177:10 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:177:6:177:10 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:177:6:177:10 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:177:6:177:10 | ...[...] | type tracker without call steps | params_flow.rb:177:6:177:10 | ...[...] | -| params_flow.rb:177:6:177:10 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:177:1:177:11 | synthetic splat argument | +| params_flow.rb:177:6:177:10 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:177:1:177:11 | synthetic splat argument | | params_flow.rb:177:6:177:10 | synthetic splat argument | type tracker without call steps | params_flow.rb:177:6:177:10 | synthetic splat argument | | params_flow.rb:177:9:177:9 | 0 | type tracker without call steps | params_flow.rb:177:9:177:9 | 0 | -| params_flow.rb:177:9:177:9 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:177:6:177:10 | synthetic splat argument | +| params_flow.rb:177:9:177:9 | 0 | type tracker without call steps with content element 0 | params_flow.rb:177:6:177:10 | synthetic splat argument | | params_flow.rb:178:1:178:30 | call to splatSideEffect | type tracker without call steps | params_flow.rb:178:1:178:30 | call to splatSideEffect | | params_flow.rb:178:1:178:30 | synthetic splat argument | type tracker with call steps | params_flow.rb:167:21:167:28 | *posargs | | params_flow.rb:178:1:178:30 | synthetic splat argument | type tracker without call steps | params_flow.rb:178:1:178:30 | synthetic splat argument | | params_flow.rb:178:21:178:29 | call to taint | type tracker with call steps | params_flow.rb:168:26:168:35 | ...[...] | | params_flow.rb:178:21:178:29 | call to taint | type tracker with call steps with content element 0 or unknown | params_flow.rb:168:5:168:14 | [post] ...[...] | | params_flow.rb:178:21:178:29 | call to taint | type tracker with call steps with content element 0 or unknown | params_flow.rb:168:5:168:36 | call to insert | -| params_flow.rb:178:21:178:29 | call to taint | type tracker with call steps with content splat position 1 | params_flow.rb:167:21:167:28 | *posargs | -| params_flow.rb:178:21:178:29 | call to taint | type tracker with call steps with content splat position 1 | params_flow.rb:168:5:168:36 | synthetic splat argument | +| params_flow.rb:178:21:178:29 | call to taint | type tracker with call steps with content element 1 | params_flow.rb:167:21:167:28 | *posargs | +| params_flow.rb:178:21:178:29 | call to taint | type tracker with call steps with content element 1 | params_flow.rb:168:5:168:36 | synthetic splat argument | | params_flow.rb:178:21:178:29 | call to taint | type tracker without call steps | params_flow.rb:178:21:178:29 | call to taint | -| params_flow.rb:178:21:178:29 | call to taint | type tracker without call steps with content splat position 1 | params_flow.rb:178:1:178:30 | synthetic splat argument | -| params_flow.rb:178:21:178:29 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:178:21:178:29 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:178:1:178:30 | synthetic splat argument | | params_flow.rb:178:21:178:29 | synthetic splat argument | type tracker without call steps | params_flow.rb:178:21:178:29 | synthetic splat argument | | params_flow.rb:178:27:178:28 | 77 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:178:27:178:28 | 77 | type tracker with call steps | params_flow.rb:168:26:168:35 | ...[...] | | params_flow.rb:178:27:178:28 | 77 | type tracker with call steps with content element 0 or unknown | params_flow.rb:168:5:168:14 | [post] ...[...] | | params_flow.rb:178:27:178:28 | 77 | type tracker with call steps with content element 0 or unknown | params_flow.rb:168:5:168:36 | call to insert | -| params_flow.rb:178:27:178:28 | 77 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:178:27:178:28 | 77 | type tracker with call steps with content splat position 1 | params_flow.rb:167:21:167:28 | *posargs | -| params_flow.rb:178:27:178:28 | 77 | type tracker with call steps with content splat position 1 | params_flow.rb:168:5:168:36 | synthetic splat argument | +| params_flow.rb:178:27:178:28 | 77 | type tracker with call steps with content element 1 | params_flow.rb:167:21:167:28 | *posargs | +| params_flow.rb:178:27:178:28 | 77 | type tracker with call steps with content element 1 | params_flow.rb:168:5:168:36 | synthetic splat argument | | params_flow.rb:178:27:178:28 | 77 | type tracker without call steps | params_flow.rb:178:21:178:29 | call to taint | | params_flow.rb:178:27:178:28 | 77 | type tracker without call steps | params_flow.rb:178:27:178:28 | 77 | -| params_flow.rb:178:27:178:28 | 77 | type tracker without call steps with content splat position 0 | params_flow.rb:178:21:178:29 | synthetic splat argument | -| params_flow.rb:178:27:178:28 | 77 | type tracker without call steps with content splat position 1 | params_flow.rb:178:1:178:30 | synthetic splat argument | +| params_flow.rb:178:27:178:28 | 77 | type tracker without call steps with content element 0 | params_flow.rb:178:21:178:29 | synthetic splat argument | +| params_flow.rb:178:27:178:28 | 77 | type tracker without call steps with content element 1 | params_flow.rb:178:1:178:30 | synthetic splat argument | | params_flow.rb:179:1:179:11 | call to sink | type tracker without call steps | params_flow.rb:179:1:179:11 | call to sink | -| params_flow.rb:179:1:179:11 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:179:1:179:11 | synthetic splat argument | type tracker without call steps | params_flow.rb:179:1:179:11 | synthetic splat argument | | params_flow.rb:179:6:179:10 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:179:6:179:10 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:179:6:179:10 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:179:6:179:10 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:179:6:179:10 | ...[...] | type tracker without call steps | params_flow.rb:179:6:179:10 | ...[...] | -| params_flow.rb:179:6:179:10 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:179:1:179:11 | synthetic splat argument | +| params_flow.rb:179:6:179:10 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:179:1:179:11 | synthetic splat argument | | params_flow.rb:179:6:179:10 | synthetic splat argument | type tracker without call steps | params_flow.rb:179:6:179:10 | synthetic splat argument | | params_flow.rb:179:9:179:9 | 0 | type tracker without call steps | params_flow.rb:179:9:179:9 | 0 | -| params_flow.rb:179:9:179:9 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:179:6:179:10 | synthetic splat argument | +| params_flow.rb:179:9:179:9 | 0 | type tracker without call steps with content element 0 | params_flow.rb:179:6:179:10 | synthetic splat argument | | params_flow.rb:181:1:183:3 | &block | type tracker without call steps | params_flow.rb:181:1:183:3 | &block | | params_flow.rb:181:1:183:3 | positionSideEffect | type tracker without call steps | params_flow.rb:181:1:183:3 | positionSideEffect | | params_flow.rb:181:1:183:3 | self in positionSideEffect | type tracker without call steps | params_flow.rb:181:1:183:3 | self in positionSideEffect | @@ -3452,14 +2880,14 @@ track | params_flow.rb:181:28:181:29 | p2 | type tracker without call steps with content element 0 or unknown | params_flow.rb:182:5:182:20 | call to insert | | params_flow.rb:181:28:181:29 | p2 | type tracker without call steps with content element 0 or unknown | params_flow.rb:187:1:187:25 | call to positionSideEffect | | params_flow.rb:181:28:181:29 | p2 | type tracker without call steps with content element 0 or unknown | params_flow.rb:192:1:192:33 | call to positionSideEffect | -| params_flow.rb:181:28:181:29 | p2 | type tracker without call steps with content splat position 1 | params_flow.rb:182:5:182:20 | synthetic splat argument | +| params_flow.rb:181:28:181:29 | p2 | type tracker without call steps with content element 1 | params_flow.rb:182:5:182:20 | synthetic splat argument | | params_flow.rb:182:5:182:6 | [post] p1 | type tracker without call steps | params_flow.rb:182:5:182:6 | [post] p1 | | params_flow.rb:182:5:182:20 | call to insert | type tracker without call steps | params_flow.rb:182:5:182:20 | call to insert | | params_flow.rb:182:5:182:20 | call to insert | type tracker without call steps | params_flow.rb:187:1:187:25 | call to positionSideEffect | | params_flow.rb:182:5:182:20 | call to insert | type tracker without call steps | params_flow.rb:192:1:192:33 | call to positionSideEffect | | params_flow.rb:182:5:182:20 | synthetic splat argument | type tracker without call steps | params_flow.rb:182:5:182:20 | synthetic splat argument | | params_flow.rb:182:15:182:15 | 0 | type tracker without call steps | params_flow.rb:182:15:182:15 | 0 | -| params_flow.rb:182:15:182:15 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:182:5:182:20 | synthetic splat argument | +| params_flow.rb:182:15:182:15 | 0 | type tracker without call steps with content element 0 | params_flow.rb:182:5:182:20 | synthetic splat argument | | params_flow.rb:185:1:185:4 | args | type tracker without call steps | params_flow.rb:185:1:185:4 | args | | params_flow.rb:185:8:185:24 | Array | type tracker without call steps | params_flow.rb:185:8:185:24 | Array | | params_flow.rb:185:8:185:24 | call to [] | type tracker with call steps | params_flow.rb:181:24:181:25 | p1 | @@ -3484,110 +2912,94 @@ track | params_flow.rb:185:14:185:22 | call to taint | type tracker with call steps with content element 0 or unknown | params_flow.rb:182:5:182:6 | [post] p1 | | params_flow.rb:185:14:185:22 | call to taint | type tracker with call steps with content element 0 or unknown | params_flow.rb:182:5:182:20 | call to insert | | params_flow.rb:185:14:185:22 | call to taint | type tracker with call steps with content element 1 | params_flow.rb:181:1:183:3 | synthetic splat parameter | -| params_flow.rb:185:14:185:22 | call to taint | type tracker with call steps with content splat position 1 | params_flow.rb:182:5:182:20 | synthetic splat argument | +| params_flow.rb:185:14:185:22 | call to taint | type tracker with call steps with content element 1 | params_flow.rb:182:5:182:20 | synthetic splat argument | | params_flow.rb:185:14:185:22 | call to taint | type tracker without call steps | params_flow.rb:185:14:185:22 | call to taint | | params_flow.rb:185:14:185:22 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:185:8:185:24 | call to [] | | params_flow.rb:185:14:185:22 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:185:8:185:24 | synthetic splat argument | | params_flow.rb:185:14:185:22 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:187:20:187:24 | * ... | -| params_flow.rb:185:14:185:22 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:185:14:185:22 | synthetic splat argument | type tracker without call steps | params_flow.rb:185:14:185:22 | synthetic splat argument | | params_flow.rb:185:20:185:21 | 78 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:185:20:185:21 | 78 | type tracker with call steps | params_flow.rb:181:28:181:29 | p2 | | params_flow.rb:185:20:185:21 | 78 | type tracker with call steps with content element 0 or unknown | params_flow.rb:182:5:182:6 | [post] p1 | | params_flow.rb:185:20:185:21 | 78 | type tracker with call steps with content element 0 or unknown | params_flow.rb:182:5:182:20 | call to insert | | params_flow.rb:185:20:185:21 | 78 | type tracker with call steps with content element 1 | params_flow.rb:181:1:183:3 | synthetic splat parameter | -| params_flow.rb:185:20:185:21 | 78 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:185:20:185:21 | 78 | type tracker with call steps with content splat position 1 | params_flow.rb:182:5:182:20 | synthetic splat argument | +| params_flow.rb:185:20:185:21 | 78 | type tracker with call steps with content element 1 | params_flow.rb:182:5:182:20 | synthetic splat argument | | params_flow.rb:185:20:185:21 | 78 | type tracker without call steps | params_flow.rb:185:14:185:22 | call to taint | | params_flow.rb:185:20:185:21 | 78 | type tracker without call steps | params_flow.rb:185:20:185:21 | 78 | +| params_flow.rb:185:20:185:21 | 78 | type tracker without call steps with content element 0 | params_flow.rb:185:14:185:22 | synthetic splat argument | | params_flow.rb:185:20:185:21 | 78 | type tracker without call steps with content element 1 | params_flow.rb:185:8:185:24 | call to [] | | params_flow.rb:185:20:185:21 | 78 | type tracker without call steps with content element 1 | params_flow.rb:185:8:185:24 | synthetic splat argument | | params_flow.rb:185:20:185:21 | 78 | type tracker without call steps with content element 1 | params_flow.rb:187:20:187:24 | * ... | -| params_flow.rb:185:20:185:21 | 78 | type tracker without call steps with content splat position 0 | params_flow.rb:185:14:185:22 | synthetic splat argument | | params_flow.rb:186:1:186:16 | call to sink | type tracker without call steps | params_flow.rb:186:1:186:16 | call to sink | -| params_flow.rb:186:1:186:16 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:186:1:186:16 | synthetic splat argument | type tracker without call steps | params_flow.rb:186:1:186:16 | synthetic splat argument | | params_flow.rb:186:6:186:12 | ...[...] | type tracker without call steps | params_flow.rb:186:6:186:12 | ...[...] | | params_flow.rb:186:6:186:12 | synthetic splat argument | type tracker without call steps | params_flow.rb:186:6:186:12 | synthetic splat argument | | params_flow.rb:186:6:186:15 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:186:6:186:15 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:186:6:186:15 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:186:6:186:15 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:186:6:186:15 | ...[...] | type tracker without call steps | params_flow.rb:186:6:186:15 | ...[...] | -| params_flow.rb:186:6:186:15 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:186:1:186:16 | synthetic splat argument | +| params_flow.rb:186:6:186:15 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:186:1:186:16 | synthetic splat argument | | params_flow.rb:186:6:186:15 | synthetic splat argument | type tracker without call steps | params_flow.rb:186:6:186:15 | synthetic splat argument | | params_flow.rb:186:11:186:11 | 0 | type tracker without call steps | params_flow.rb:186:11:186:11 | 0 | -| params_flow.rb:186:11:186:11 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:186:6:186:12 | synthetic splat argument | +| params_flow.rb:186:11:186:11 | 0 | type tracker without call steps with content element 0 | params_flow.rb:186:6:186:12 | synthetic splat argument | | params_flow.rb:186:14:186:14 | 0 | type tracker without call steps | params_flow.rb:186:14:186:14 | 0 | -| params_flow.rb:186:14:186:14 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:186:6:186:15 | synthetic splat argument | +| params_flow.rb:186:14:186:14 | 0 | type tracker without call steps with content element 0 | params_flow.rb:186:6:186:15 | synthetic splat argument | | params_flow.rb:187:1:187:25 | call to positionSideEffect | type tracker without call steps | params_flow.rb:187:1:187:25 | call to positionSideEffect | | params_flow.rb:187:20:187:24 | * ... | type tracker with call steps | params_flow.rb:181:1:183:3 | synthetic splat parameter | | params_flow.rb:187:20:187:24 | * ... | type tracker without call steps | params_flow.rb:187:20:187:24 | * ... | | params_flow.rb:188:1:188:16 | call to sink | type tracker without call steps | params_flow.rb:188:1:188:16 | call to sink | -| params_flow.rb:188:1:188:16 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:188:1:188:16 | synthetic splat argument | type tracker without call steps | params_flow.rb:188:1:188:16 | synthetic splat argument | | params_flow.rb:188:6:188:12 | ...[...] | type tracker without call steps | params_flow.rb:188:6:188:12 | ...[...] | | params_flow.rb:188:6:188:12 | synthetic splat argument | type tracker without call steps | params_flow.rb:188:6:188:12 | synthetic splat argument | | params_flow.rb:188:6:188:15 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:188:6:188:15 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:188:6:188:15 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:188:6:188:15 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:188:6:188:15 | ...[...] | type tracker without call steps | params_flow.rb:188:6:188:15 | ...[...] | -| params_flow.rb:188:6:188:15 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:188:1:188:16 | synthetic splat argument | +| params_flow.rb:188:6:188:15 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:188:1:188:16 | synthetic splat argument | | params_flow.rb:188:6:188:15 | synthetic splat argument | type tracker without call steps | params_flow.rb:188:6:188:15 | synthetic splat argument | | params_flow.rb:188:11:188:11 | 0 | type tracker without call steps | params_flow.rb:188:11:188:11 | 0 | -| params_flow.rb:188:11:188:11 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:188:6:188:12 | synthetic splat argument | +| params_flow.rb:188:11:188:11 | 0 | type tracker without call steps with content element 0 | params_flow.rb:188:6:188:12 | synthetic splat argument | | params_flow.rb:188:14:188:14 | 0 | type tracker without call steps | params_flow.rb:188:14:188:14 | 0 | -| params_flow.rb:188:14:188:14 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:188:6:188:15 | synthetic splat argument | +| params_flow.rb:188:14:188:14 | 0 | type tracker without call steps with content element 0 | params_flow.rb:188:6:188:15 | synthetic splat argument | | params_flow.rb:190:1:190:2 | p1 | type tracker without call steps | params_flow.rb:190:1:190:2 | p1 | | params_flow.rb:190:6:190:7 | Array | type tracker without call steps | params_flow.rb:190:6:190:7 | Array | | params_flow.rb:190:6:190:7 | call to [] | type tracker with call steps | params_flow.rb:181:24:181:25 | p1 | -| params_flow.rb:190:6:190:7 | call to [] | type tracker with call steps with content splat position 0 | params_flow.rb:181:1:183:3 | synthetic splat parameter | | params_flow.rb:190:6:190:7 | call to [] | type tracker without call steps | params_flow.rb:190:6:190:7 | call to [] | -| params_flow.rb:190:6:190:7 | call to [] | type tracker without call steps with content splat position 0 | params_flow.rb:192:1:192:33 | synthetic splat argument | +| params_flow.rb:190:6:190:7 | call to [] | type tracker without call steps with content element 0 | params_flow.rb:192:1:192:33 | synthetic splat argument | | params_flow.rb:191:1:191:11 | call to sink | type tracker without call steps | params_flow.rb:191:1:191:11 | call to sink | -| params_flow.rb:191:1:191:11 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:191:1:191:11 | synthetic splat argument | type tracker without call steps | params_flow.rb:191:1:191:11 | synthetic splat argument | | params_flow.rb:191:6:191:10 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:191:6:191:10 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:191:6:191:10 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:191:6:191:10 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:191:6:191:10 | ...[...] | type tracker without call steps | params_flow.rb:191:6:191:10 | ...[...] | -| params_flow.rb:191:6:191:10 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:191:1:191:11 | synthetic splat argument | +| params_flow.rb:191:6:191:10 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:191:1:191:11 | synthetic splat argument | | params_flow.rb:191:6:191:10 | synthetic splat argument | type tracker without call steps | params_flow.rb:191:6:191:10 | synthetic splat argument | | params_flow.rb:191:9:191:9 | 0 | type tracker without call steps | params_flow.rb:191:9:191:9 | 0 | -| params_flow.rb:191:9:191:9 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:191:6:191:10 | synthetic splat argument | +| params_flow.rb:191:9:191:9 | 0 | type tracker without call steps with content element 0 | params_flow.rb:191:6:191:10 | synthetic splat argument | | params_flow.rb:192:1:192:33 | call to positionSideEffect | type tracker without call steps | params_flow.rb:192:1:192:33 | call to positionSideEffect | -| params_flow.rb:192:1:192:33 | synthetic splat argument | type tracker with call steps | params_flow.rb:181:1:183:3 | synthetic splat parameter | | params_flow.rb:192:1:192:33 | synthetic splat argument | type tracker without call steps | params_flow.rb:192:1:192:33 | synthetic splat argument | | params_flow.rb:192:24:192:32 | call to taint | type tracker with call steps | params_flow.rb:181:28:181:29 | p2 | | params_flow.rb:192:24:192:32 | call to taint | type tracker with call steps with content element 0 or unknown | params_flow.rb:182:5:182:6 | [post] p1 | | params_flow.rb:192:24:192:32 | call to taint | type tracker with call steps with content element 0 or unknown | params_flow.rb:182:5:182:20 | call to insert | -| params_flow.rb:192:24:192:32 | call to taint | type tracker with call steps with content splat position 1 | params_flow.rb:181:1:183:3 | synthetic splat parameter | -| params_flow.rb:192:24:192:32 | call to taint | type tracker with call steps with content splat position 1 | params_flow.rb:182:5:182:20 | synthetic splat argument | +| params_flow.rb:192:24:192:32 | call to taint | type tracker with call steps with content element 1 | params_flow.rb:182:5:182:20 | synthetic splat argument | | params_flow.rb:192:24:192:32 | call to taint | type tracker without call steps | params_flow.rb:192:24:192:32 | call to taint | -| params_flow.rb:192:24:192:32 | call to taint | type tracker without call steps with content splat position 1 | params_flow.rb:192:1:192:33 | synthetic splat argument | -| params_flow.rb:192:24:192:32 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | +| params_flow.rb:192:24:192:32 | call to taint | type tracker without call steps with content element 1 | params_flow.rb:192:1:192:33 | synthetic splat argument | | params_flow.rb:192:24:192:32 | synthetic splat argument | type tracker without call steps | params_flow.rb:192:24:192:32 | synthetic splat argument | | params_flow.rb:192:30:192:31 | 79 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:192:30:192:31 | 79 | type tracker with call steps | params_flow.rb:181:28:181:29 | p2 | | params_flow.rb:192:30:192:31 | 79 | type tracker with call steps with content element 0 or unknown | params_flow.rb:182:5:182:6 | [post] p1 | | params_flow.rb:192:30:192:31 | 79 | type tracker with call steps with content element 0 or unknown | params_flow.rb:182:5:182:20 | call to insert | -| params_flow.rb:192:30:192:31 | 79 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | -| params_flow.rb:192:30:192:31 | 79 | type tracker with call steps with content splat position 1 | params_flow.rb:181:1:183:3 | synthetic splat parameter | -| params_flow.rb:192:30:192:31 | 79 | type tracker with call steps with content splat position 1 | params_flow.rb:182:5:182:20 | synthetic splat argument | +| params_flow.rb:192:30:192:31 | 79 | type tracker with call steps with content element 1 | params_flow.rb:182:5:182:20 | synthetic splat argument | | params_flow.rb:192:30:192:31 | 79 | type tracker without call steps | params_flow.rb:192:24:192:32 | call to taint | | params_flow.rb:192:30:192:31 | 79 | type tracker without call steps | params_flow.rb:192:30:192:31 | 79 | -| params_flow.rb:192:30:192:31 | 79 | type tracker without call steps with content splat position 0 | params_flow.rb:192:24:192:32 | synthetic splat argument | -| params_flow.rb:192:30:192:31 | 79 | type tracker without call steps with content splat position 1 | params_flow.rb:192:1:192:33 | synthetic splat argument | +| params_flow.rb:192:30:192:31 | 79 | type tracker without call steps with content element 0 | params_flow.rb:192:24:192:32 | synthetic splat argument | +| params_flow.rb:192:30:192:31 | 79 | type tracker without call steps with content element 1 | params_flow.rb:192:1:192:33 | synthetic splat argument | | params_flow.rb:193:1:193:11 | call to sink | type tracker without call steps | params_flow.rb:193:1:193:11 | call to sink | -| params_flow.rb:193:1:193:11 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:193:1:193:11 | synthetic splat argument | type tracker without call steps | params_flow.rb:193:1:193:11 | synthetic splat argument | | params_flow.rb:193:6:193:10 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:193:6:193:10 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:193:6:193:10 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:193:6:193:10 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:193:6:193:10 | ...[...] | type tracker without call steps | params_flow.rb:193:6:193:10 | ...[...] | -| params_flow.rb:193:6:193:10 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:193:1:193:11 | synthetic splat argument | +| params_flow.rb:193:6:193:10 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:193:1:193:11 | synthetic splat argument | | params_flow.rb:193:6:193:10 | synthetic splat argument | type tracker without call steps | params_flow.rb:193:6:193:10 | synthetic splat argument | | params_flow.rb:193:9:193:9 | 0 | type tracker without call steps | params_flow.rb:193:9:193:9 | 0 | -| params_flow.rb:193:9:193:9 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:193:6:193:10 | synthetic splat argument | +| params_flow.rb:193:9:193:9 | 0 | type tracker without call steps with content element 0 | params_flow.rb:193:6:193:10 | synthetic splat argument | | params_flow.rb:195:1:195:8 | int_hash | type tracker without call steps | params_flow.rb:195:1:195:8 | int_hash | | params_flow.rb:195:12:198:1 | Hash | type tracker without call steps | params_flow.rb:195:12:198:1 | Hash | | params_flow.rb:195:12:198:1 | call to [] | type tracker with call steps | params_flow.rb:200:9:200:9 | x | @@ -3602,28 +3014,26 @@ track | params_flow.rb:195:12:198:1 | synthetic splat argument | type tracker without call steps | params_flow.rb:195:12:198:1 | synthetic splat argument | | params_flow.rb:196:5:196:5 | 0 | type tracker without call steps | params_flow.rb:196:5:196:5 | 0 | | params_flow.rb:196:5:196:18 | Pair | type tracker without call steps | params_flow.rb:196:5:196:18 | Pair | -| params_flow.rb:196:5:196:18 | Pair | type tracker without call steps with content splat position 0 | params_flow.rb:195:12:198:1 | synthetic splat argument | +| params_flow.rb:196:5:196:18 | Pair | type tracker without call steps with content element 0 | params_flow.rb:195:12:198:1 | synthetic splat argument | | params_flow.rb:196:10:196:18 | call to taint | type tracker with call steps | params_flow.rb:200:9:200:9 | x | | params_flow.rb:196:10:196:18 | call to taint | type tracker with call steps with content element 0 | params_flow.rb:200:1:205:3 | synthetic splat parameter | | params_flow.rb:196:10:196:18 | call to taint | type tracker without call steps | params_flow.rb:196:10:196:18 | call to taint | | params_flow.rb:196:10:196:18 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:195:12:198:1 | call to [] | | params_flow.rb:196:10:196:18 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:195:12:198:1 | synthetic hash-splat argument | | params_flow.rb:196:10:196:18 | call to taint | type tracker without call steps with content element 0 | params_flow.rb:207:5:207:13 | * ... | -| params_flow.rb:196:10:196:18 | synthetic splat argument | type tracker with call steps | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:196:10:196:18 | synthetic splat argument | type tracker without call steps | params_flow.rb:196:10:196:18 | synthetic splat argument | | params_flow.rb:196:16:196:17 | 80 | type tracker with call steps | params_flow.rb:1:11:1:11 | x | | params_flow.rb:196:16:196:17 | 80 | type tracker with call steps | params_flow.rb:200:9:200:9 | x | | params_flow.rb:196:16:196:17 | 80 | type tracker with call steps with content element 0 | params_flow.rb:200:1:205:3 | synthetic splat parameter | -| params_flow.rb:196:16:196:17 | 80 | type tracker with call steps with content splat position 0 | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:196:16:196:17 | 80 | type tracker without call steps | params_flow.rb:196:10:196:18 | call to taint | | params_flow.rb:196:16:196:17 | 80 | type tracker without call steps | params_flow.rb:196:16:196:17 | 80 | | params_flow.rb:196:16:196:17 | 80 | type tracker without call steps with content element 0 | params_flow.rb:195:12:198:1 | call to [] | | params_flow.rb:196:16:196:17 | 80 | type tracker without call steps with content element 0 | params_flow.rb:195:12:198:1 | synthetic hash-splat argument | +| params_flow.rb:196:16:196:17 | 80 | type tracker without call steps with content element 0 | params_flow.rb:196:10:196:18 | synthetic splat argument | | params_flow.rb:196:16:196:17 | 80 | type tracker without call steps with content element 0 | params_flow.rb:207:5:207:13 | * ... | -| params_flow.rb:196:16:196:17 | 80 | type tracker without call steps with content splat position 0 | params_flow.rb:196:10:196:18 | synthetic splat argument | | params_flow.rb:197:5:197:5 | 1 | type tracker without call steps | params_flow.rb:197:5:197:5 | 1 | | params_flow.rb:197:5:197:12 | Pair | type tracker without call steps | params_flow.rb:197:5:197:12 | Pair | -| params_flow.rb:197:5:197:12 | Pair | type tracker without call steps with content splat position 1 | params_flow.rb:195:12:198:1 | synthetic splat argument | +| params_flow.rb:197:5:197:12 | Pair | type tracker without call steps with content element 1 | params_flow.rb:195:12:198:1 | synthetic splat argument | | params_flow.rb:197:10:197:12 | "B" | type tracker with call steps | params_flow.rb:200:12:200:12 | y | | params_flow.rb:197:10:197:12 | "B" | type tracker with call steps with content element 1 | params_flow.rb:200:1:205:3 | synthetic splat parameter | | params_flow.rb:197:10:197:12 | "B" | type tracker without call steps | params_flow.rb:197:10:197:12 | "B" | @@ -3640,50 +3050,42 @@ track | params_flow.rb:200:12:200:12 | y | type tracker without call steps | params_flow.rb:200:12:200:12 | y | | params_flow.rb:200:12:200:12 | y | type tracker without call steps | params_flow.rb:200:12:200:12 | y | | params_flow.rb:201:5:201:15 | call to sink | type tracker without call steps | params_flow.rb:201:5:201:15 | call to sink | -| params_flow.rb:201:5:201:15 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:201:5:201:15 | synthetic splat argument | type tracker without call steps | params_flow.rb:201:5:201:15 | synthetic splat argument | | params_flow.rb:201:11:201:14 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:201:11:201:14 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:201:11:201:14 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:201:11:201:14 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:201:11:201:14 | ...[...] | type tracker without call steps | params_flow.rb:201:11:201:14 | ...[...] | -| params_flow.rb:201:11:201:14 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:201:5:201:15 | synthetic splat argument | +| params_flow.rb:201:11:201:14 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:201:5:201:15 | synthetic splat argument | | params_flow.rb:201:11:201:14 | synthetic splat argument | type tracker without call steps | params_flow.rb:201:11:201:14 | synthetic splat argument | | params_flow.rb:201:13:201:13 | 0 | type tracker without call steps | params_flow.rb:201:13:201:13 | 0 | -| params_flow.rb:201:13:201:13 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:201:11:201:14 | synthetic splat argument | +| params_flow.rb:201:13:201:13 | 0 | type tracker without call steps with content element 0 | params_flow.rb:201:11:201:14 | synthetic splat argument | | params_flow.rb:202:5:202:15 | call to sink | type tracker without call steps | params_flow.rb:202:5:202:15 | call to sink | -| params_flow.rb:202:5:202:15 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:202:5:202:15 | synthetic splat argument | type tracker without call steps | params_flow.rb:202:5:202:15 | synthetic splat argument | | params_flow.rb:202:11:202:14 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:202:11:202:14 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:202:11:202:14 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:202:11:202:14 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:202:11:202:14 | ...[...] | type tracker without call steps | params_flow.rb:202:11:202:14 | ...[...] | -| params_flow.rb:202:11:202:14 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:202:5:202:15 | synthetic splat argument | +| params_flow.rb:202:11:202:14 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:202:5:202:15 | synthetic splat argument | | params_flow.rb:202:11:202:14 | synthetic splat argument | type tracker without call steps | params_flow.rb:202:11:202:14 | synthetic splat argument | | params_flow.rb:202:13:202:13 | 1 | type tracker without call steps | params_flow.rb:202:13:202:13 | 1 | -| params_flow.rb:202:13:202:13 | 1 | type tracker without call steps with content splat position 0 | params_flow.rb:202:11:202:14 | synthetic splat argument | +| params_flow.rb:202:13:202:13 | 1 | type tracker without call steps with content element 0 | params_flow.rb:202:11:202:14 | synthetic splat argument | | params_flow.rb:203:5:203:15 | call to sink | type tracker without call steps | params_flow.rb:203:5:203:15 | call to sink | -| params_flow.rb:203:5:203:15 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:203:5:203:15 | synthetic splat argument | type tracker without call steps | params_flow.rb:203:5:203:15 | synthetic splat argument | | params_flow.rb:203:11:203:14 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:203:11:203:14 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:203:11:203:14 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:203:11:203:14 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:203:11:203:14 | ...[...] | type tracker without call steps | params_flow.rb:203:11:203:14 | ...[...] | -| params_flow.rb:203:11:203:14 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:203:5:203:15 | synthetic splat argument | +| params_flow.rb:203:11:203:14 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:203:5:203:15 | synthetic splat argument | | params_flow.rb:203:11:203:14 | synthetic splat argument | type tracker without call steps | params_flow.rb:203:11:203:14 | synthetic splat argument | | params_flow.rb:203:13:203:13 | 0 | type tracker without call steps | params_flow.rb:203:13:203:13 | 0 | -| params_flow.rb:203:13:203:13 | 0 | type tracker without call steps with content splat position 0 | params_flow.rb:203:11:203:14 | synthetic splat argument | +| params_flow.rb:203:13:203:13 | 0 | type tracker without call steps with content element 0 | params_flow.rb:203:11:203:14 | synthetic splat argument | | params_flow.rb:204:5:204:15 | call to sink | type tracker without call steps | params_flow.rb:204:5:204:15 | call to sink | | params_flow.rb:204:5:204:15 | call to sink | type tracker without call steps | params_flow.rb:207:1:207:14 | call to foo | -| params_flow.rb:204:5:204:15 | synthetic splat argument | type tracker with call steps | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:204:5:204:15 | synthetic splat argument | type tracker without call steps | params_flow.rb:204:5:204:15 | synthetic splat argument | | params_flow.rb:204:11:204:14 | ...[...] | type tracker with call steps | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:204:11:204:14 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:5:1:7:3 | synthetic splat parameter | -| params_flow.rb:204:11:204:14 | ...[...] | type tracker with call steps with content splat position 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | +| params_flow.rb:204:11:204:14 | ...[...] | type tracker with call steps with content element 0 | params_flow.rb:6:5:6:10 | synthetic splat argument | | params_flow.rb:204:11:204:14 | ...[...] | type tracker without call steps | params_flow.rb:204:11:204:14 | ...[...] | -| params_flow.rb:204:11:204:14 | ...[...] | type tracker without call steps with content splat position 0 | params_flow.rb:204:5:204:15 | synthetic splat argument | +| params_flow.rb:204:11:204:14 | ...[...] | type tracker without call steps with content element 0 | params_flow.rb:204:5:204:15 | synthetic splat argument | | params_flow.rb:204:11:204:14 | synthetic splat argument | type tracker without call steps | params_flow.rb:204:11:204:14 | synthetic splat argument | | params_flow.rb:204:13:204:13 | 1 | type tracker without call steps | params_flow.rb:204:13:204:13 | 1 | -| params_flow.rb:204:13:204:13 | 1 | type tracker without call steps with content splat position 0 | params_flow.rb:204:11:204:14 | synthetic splat argument | +| params_flow.rb:204:13:204:13 | 1 | type tracker without call steps with content element 0 | params_flow.rb:204:11:204:14 | synthetic splat argument | | params_flow.rb:207:1:207:14 | call to foo | type tracker without call steps | params_flow.rb:207:1:207:14 | call to foo | | params_flow.rb:207:5:207:13 | * ... | type tracker with call steps | params_flow.rb:200:1:205:3 | synthetic splat parameter | | params_flow.rb:207:5:207:13 | * ... | type tracker without call steps | params_flow.rb:207:5:207:13 | * ... | @@ -3971,14 +3373,8 @@ trackEnd | params_flow.rb:1:11:1:11 | x | params_flow.rb:69:14:69:14 | x | | params_flow.rb:1:11:1:11 | x | params_flow.rb:69:17:69:17 | y | | params_flow.rb:1:11:1:11 | x | params_flow.rb:69:17:69:17 | y | -| params_flow.rb:1:11:1:11 | x | params_flow.rb:69:24:69:24 | w | -| params_flow.rb:1:11:1:11 | x | params_flow.rb:69:24:69:24 | w | -| params_flow.rb:1:11:1:11 | x | params_flow.rb:69:27:69:27 | r | -| params_flow.rb:1:11:1:11 | x | params_flow.rb:69:27:69:27 | r | | params_flow.rb:1:11:1:11 | x | params_flow.rb:70:10:70:10 | x | | params_flow.rb:1:11:1:11 | x | params_flow.rb:71:10:71:10 | y | -| params_flow.rb:1:11:1:11 | x | params_flow.rb:74:10:74:10 | w | -| params_flow.rb:1:11:1:11 | x | params_flow.rb:75:10:75:10 | r | | params_flow.rb:1:11:1:11 | x | params_flow.rb:78:10:78:18 | call to taint | | params_flow.rb:1:11:1:11 | x | params_flow.rb:78:21:78:29 | call to taint | | params_flow.rb:1:11:1:11 | x | params_flow.rb:78:32:78:40 | call to taint | @@ -4024,10 +3420,7 @@ trackEnd | params_flow.rb:1:11:1:11 | x | params_flow.rb:96:79:96:87 | call to taint | | params_flow.rb:1:11:1:11 | x | params_flow.rb:98:19:98:19 | a | | params_flow.rb:1:11:1:11 | x | params_flow.rb:98:19:98:19 | a | -| params_flow.rb:1:11:1:11 | x | params_flow.rb:98:31:98:31 | b | -| params_flow.rb:1:11:1:11 | x | params_flow.rb:98:31:98:31 | b | | params_flow.rb:1:11:1:11 | x | params_flow.rb:99:10:99:10 | a | -| params_flow.rb:1:11:1:11 | x | params_flow.rb:102:10:102:10 | b | | params_flow.rb:1:11:1:11 | x | params_flow.rb:105:15:105:23 | call to taint | | params_flow.rb:1:11:1:11 | x | params_flow.rb:105:28:105:36 | call to taint | | params_flow.rb:1:11:1:11 | x | params_flow.rb:105:39:105:47 | call to taint | @@ -4203,17 +3596,14 @@ trackEnd | params_flow.rb:9:20:9:21 | p2 | params_flow.rb:9:20:9:21 | p2 | | params_flow.rb:9:20:9:21 | p2 | params_flow.rb:11:10:11:11 | p2 | | params_flow.rb:10:5:10:11 | call to sink | params_flow.rb:10:5:10:11 | call to sink | -| params_flow.rb:10:5:10:11 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:10:5:10:11 | synthetic splat argument | params_flow.rb:10:5:10:11 | synthetic splat argument | | params_flow.rb:11:5:11:11 | call to sink | params_flow.rb:11:5:11:11 | call to sink | | params_flow.rb:11:5:11:11 | call to sink | params_flow.rb:14:1:14:30 | call to positional | | params_flow.rb:11:5:11:11 | call to sink | params_flow.rb:44:1:44:28 | call to positional | | params_flow.rb:11:5:11:11 | call to sink | params_flow.rb:47:1:47:17 | call to positional | | params_flow.rb:11:5:11:11 | call to sink | params_flow.rb:118:1:118:14 | call to positional | -| params_flow.rb:11:5:11:11 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:11:5:11:11 | synthetic splat argument | params_flow.rb:11:5:11:11 | synthetic splat argument | | params_flow.rb:14:1:14:30 | call to positional | params_flow.rb:14:1:14:30 | call to positional | -| params_flow.rb:14:1:14:30 | synthetic splat argument | params_flow.rb:9:1:12:3 | synthetic splat parameter | | params_flow.rb:14:1:14:30 | synthetic splat argument | params_flow.rb:14:1:14:30 | synthetic splat argument | | params_flow.rb:14:12:14:19 | call to taint | params_flow.rb:5:10:5:10 | x | | params_flow.rb:14:12:14:19 | call to taint | params_flow.rb:5:10:5:10 | x | @@ -4222,7 +3612,6 @@ trackEnd | params_flow.rb:14:12:14:19 | call to taint | params_flow.rb:9:16:9:17 | p1 | | params_flow.rb:14:12:14:19 | call to taint | params_flow.rb:10:10:10:11 | p1 | | params_flow.rb:14:12:14:19 | call to taint | params_flow.rb:14:12:14:19 | call to taint | -| params_flow.rb:14:12:14:19 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:14:12:14:19 | synthetic splat argument | params_flow.rb:14:12:14:19 | synthetic splat argument | | params_flow.rb:14:18:14:18 | 1 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:14:18:14:18 | 1 | params_flow.rb:1:11:1:11 | x | @@ -4242,7 +3631,6 @@ trackEnd | params_flow.rb:14:22:14:29 | call to taint | params_flow.rb:9:20:9:21 | p2 | | params_flow.rb:14:22:14:29 | call to taint | params_flow.rb:11:10:11:11 | p2 | | params_flow.rb:14:22:14:29 | call to taint | params_flow.rb:14:22:14:29 | call to taint | -| params_flow.rb:14:22:14:29 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:14:22:14:29 | synthetic splat argument | params_flow.rb:14:22:14:29 | synthetic splat argument | | params_flow.rb:14:28:14:28 | 2 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:14:28:14:28 | 2 | params_flow.rb:1:11:1:11 | x | @@ -4280,17 +3668,14 @@ trackEnd | params_flow.rb:16:18:16:19 | p2 | params_flow.rb:16:18:16:19 | p2 | | params_flow.rb:16:18:16:19 | p2 | params_flow.rb:18:10:18:11 | p2 | | params_flow.rb:17:5:17:11 | call to sink | params_flow.rb:17:5:17:11 | call to sink | -| params_flow.rb:17:5:17:11 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:17:5:17:11 | synthetic splat argument | params_flow.rb:17:5:17:11 | synthetic splat argument | | params_flow.rb:18:5:18:11 | call to sink | params_flow.rb:18:5:18:11 | call to sink | | params_flow.rb:18:5:18:11 | call to sink | params_flow.rb:21:1:21:35 | call to keyword | | params_flow.rb:18:5:18:11 | call to sink | params_flow.rb:22:1:22:35 | call to keyword | | params_flow.rb:18:5:18:11 | call to sink | params_flow.rb:23:1:23:41 | call to keyword | | params_flow.rb:18:5:18:11 | call to sink | params_flow.rb:41:1:41:30 | call to keyword | -| params_flow.rb:18:5:18:11 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:18:5:18:11 | synthetic splat argument | params_flow.rb:18:5:18:11 | synthetic splat argument | | params_flow.rb:21:1:21:35 | call to keyword | params_flow.rb:21:1:21:35 | call to keyword | -| params_flow.rb:21:1:21:35 | synthetic hash-splat argument | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | | params_flow.rb:21:1:21:35 | synthetic hash-splat argument | params_flow.rb:21:1:21:35 | synthetic hash-splat argument | | params_flow.rb:21:9:21:10 | :p1 | params_flow.rb:21:9:21:10 | :p1 | | params_flow.rb:21:9:21:20 | Pair | params_flow.rb:21:9:21:20 | Pair | @@ -4301,7 +3686,6 @@ trackEnd | params_flow.rb:21:13:21:20 | call to taint | params_flow.rb:16:13:16:14 | p1 | | params_flow.rb:21:13:21:20 | call to taint | params_flow.rb:17:10:17:11 | p1 | | params_flow.rb:21:13:21:20 | call to taint | params_flow.rb:21:13:21:20 | call to taint | -| params_flow.rb:21:13:21:20 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:21:13:21:20 | synthetic splat argument | params_flow.rb:21:13:21:20 | synthetic splat argument | | params_flow.rb:21:19:21:19 | 3 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:21:19:21:19 | 3 | params_flow.rb:1:11:1:11 | x | @@ -4323,7 +3707,6 @@ trackEnd | params_flow.rb:21:27:21:34 | call to taint | params_flow.rb:16:18:16:19 | p2 | | params_flow.rb:21:27:21:34 | call to taint | params_flow.rb:18:10:18:11 | p2 | | params_flow.rb:21:27:21:34 | call to taint | params_flow.rb:21:27:21:34 | call to taint | -| params_flow.rb:21:27:21:34 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:21:27:21:34 | synthetic splat argument | params_flow.rb:21:27:21:34 | synthetic splat argument | | params_flow.rb:21:33:21:33 | 4 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:21:33:21:33 | 4 | params_flow.rb:1:11:1:11 | x | @@ -4337,7 +3720,6 @@ trackEnd | params_flow.rb:21:33:21:33 | 4 | params_flow.rb:21:27:21:34 | call to taint | | params_flow.rb:21:33:21:33 | 4 | params_flow.rb:21:33:21:33 | 4 | | params_flow.rb:22:1:22:35 | call to keyword | params_flow.rb:22:1:22:35 | call to keyword | -| params_flow.rb:22:1:22:35 | synthetic hash-splat argument | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | | params_flow.rb:22:1:22:35 | synthetic hash-splat argument | params_flow.rb:22:1:22:35 | synthetic hash-splat argument | | params_flow.rb:22:9:22:10 | :p2 | params_flow.rb:22:9:22:10 | :p2 | | params_flow.rb:22:9:22:20 | Pair | params_flow.rb:22:9:22:20 | Pair | @@ -4348,7 +3730,6 @@ trackEnd | params_flow.rb:22:13:22:20 | call to taint | params_flow.rb:16:18:16:19 | p2 | | params_flow.rb:22:13:22:20 | call to taint | params_flow.rb:18:10:18:11 | p2 | | params_flow.rb:22:13:22:20 | call to taint | params_flow.rb:22:13:22:20 | call to taint | -| params_flow.rb:22:13:22:20 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:22:13:22:20 | synthetic splat argument | params_flow.rb:22:13:22:20 | synthetic splat argument | | params_flow.rb:22:19:22:19 | 5 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:22:19:22:19 | 5 | params_flow.rb:1:11:1:11 | x | @@ -4370,7 +3751,6 @@ trackEnd | params_flow.rb:22:27:22:34 | call to taint | params_flow.rb:16:13:16:14 | p1 | | params_flow.rb:22:27:22:34 | call to taint | params_flow.rb:17:10:17:11 | p1 | | params_flow.rb:22:27:22:34 | call to taint | params_flow.rb:22:27:22:34 | call to taint | -| params_flow.rb:22:27:22:34 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:22:27:22:34 | synthetic splat argument | params_flow.rb:22:27:22:34 | synthetic splat argument | | params_flow.rb:22:33:22:33 | 6 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:22:33:22:33 | 6 | params_flow.rb:1:11:1:11 | x | @@ -4384,7 +3764,6 @@ trackEnd | params_flow.rb:22:33:22:33 | 6 | params_flow.rb:22:27:22:34 | call to taint | | params_flow.rb:22:33:22:33 | 6 | params_flow.rb:22:33:22:33 | 6 | | params_flow.rb:23:1:23:41 | call to keyword | params_flow.rb:23:1:23:41 | call to keyword | -| params_flow.rb:23:1:23:41 | synthetic hash-splat argument | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | | params_flow.rb:23:1:23:41 | synthetic hash-splat argument | params_flow.rb:23:1:23:41 | synthetic hash-splat argument | | params_flow.rb:23:9:23:11 | :p2 | params_flow.rb:23:9:23:11 | :p2 | | params_flow.rb:23:9:23:23 | Pair | params_flow.rb:23:9:23:23 | Pair | @@ -4395,7 +3774,6 @@ trackEnd | params_flow.rb:23:16:23:23 | call to taint | params_flow.rb:16:18:16:19 | p2 | | params_flow.rb:23:16:23:23 | call to taint | params_flow.rb:18:10:18:11 | p2 | | params_flow.rb:23:16:23:23 | call to taint | params_flow.rb:23:16:23:23 | call to taint | -| params_flow.rb:23:16:23:23 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:23:16:23:23 | synthetic splat argument | params_flow.rb:23:16:23:23 | synthetic splat argument | | params_flow.rb:23:22:23:22 | 7 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:23:22:23:22 | 7 | params_flow.rb:1:11:1:11 | x | @@ -4417,7 +3795,6 @@ trackEnd | params_flow.rb:23:33:23:40 | call to taint | params_flow.rb:16:13:16:14 | p1 | | params_flow.rb:23:33:23:40 | call to taint | params_flow.rb:17:10:17:11 | p1 | | params_flow.rb:23:33:23:40 | call to taint | params_flow.rb:23:33:23:40 | call to taint | -| params_flow.rb:23:33:23:40 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:23:33:23:40 | synthetic splat argument | params_flow.rb:23:33:23:40 | synthetic splat argument | | params_flow.rb:23:39:23:39 | 8 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:23:39:23:39 | 8 | params_flow.rb:1:11:1:11 | x | @@ -4458,10 +3835,8 @@ trackEnd | params_flow.rb:25:17:25:24 | **kwargs | params_flow.rb:30:11:30:16 | kwargs | | params_flow.rb:25:19:25:24 | kwargs | params_flow.rb:25:19:25:24 | kwargs | | params_flow.rb:26:5:26:11 | call to sink | params_flow.rb:26:5:26:11 | call to sink | -| params_flow.rb:26:5:26:11 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:26:5:26:11 | synthetic splat argument | params_flow.rb:26:5:26:11 | synthetic splat argument | | params_flow.rb:27:5:27:22 | call to sink | params_flow.rb:27:5:27:22 | call to sink | -| params_flow.rb:27:5:27:22 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:27:5:27:22 | synthetic splat argument | params_flow.rb:27:5:27:22 | synthetic splat argument | | params_flow.rb:27:11:27:21 | ...[...] | params_flow.rb:5:10:5:10 | x | | params_flow.rb:27:11:27:21 | ...[...] | params_flow.rb:5:10:5:10 | x | @@ -4471,7 +3846,6 @@ trackEnd | params_flow.rb:27:11:27:21 | synthetic splat argument | params_flow.rb:27:11:27:21 | synthetic splat argument | | params_flow.rb:27:18:27:20 | :p1 | params_flow.rb:27:18:27:20 | :p1 | | params_flow.rb:28:5:28:22 | call to sink | params_flow.rb:28:5:28:22 | call to sink | -| params_flow.rb:28:5:28:22 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:28:5:28:22 | synthetic splat argument | params_flow.rb:28:5:28:22 | synthetic splat argument | | params_flow.rb:28:11:28:21 | ...[...] | params_flow.rb:5:10:5:10 | x | | params_flow.rb:28:11:28:21 | ...[...] | params_flow.rb:5:10:5:10 | x | @@ -4481,7 +3855,6 @@ trackEnd | params_flow.rb:28:11:28:21 | synthetic splat argument | params_flow.rb:28:11:28:21 | synthetic splat argument | | params_flow.rb:28:18:28:20 | :p2 | params_flow.rb:28:18:28:20 | :p2 | | params_flow.rb:29:5:29:22 | call to sink | params_flow.rb:29:5:29:22 | call to sink | -| params_flow.rb:29:5:29:22 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:29:5:29:22 | synthetic splat argument | params_flow.rb:29:5:29:22 | synthetic splat argument | | params_flow.rb:29:11:29:21 | ...[...] | params_flow.rb:5:10:5:10 | x | | params_flow.rb:29:11:29:21 | ...[...] | params_flow.rb:5:10:5:10 | x | @@ -4494,7 +3867,6 @@ trackEnd | params_flow.rb:30:5:30:22 | call to sink | params_flow.rb:33:1:33:58 | call to kwargs | | params_flow.rb:30:5:30:22 | call to sink | params_flow.rb:35:1:35:29 | call to kwargs | | params_flow.rb:30:5:30:22 | call to sink | params_flow.rb:38:1:38:14 | call to kwargs | -| params_flow.rb:30:5:30:22 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:30:5:30:22 | synthetic splat argument | params_flow.rb:30:5:30:22 | synthetic splat argument | | params_flow.rb:30:11:30:21 | ...[...] | params_flow.rb:5:10:5:10 | x | | params_flow.rb:30:11:30:21 | ...[...] | params_flow.rb:5:10:5:10 | x | @@ -4504,7 +3876,6 @@ trackEnd | params_flow.rb:30:11:30:21 | synthetic splat argument | params_flow.rb:30:11:30:21 | synthetic splat argument | | params_flow.rb:30:18:30:20 | :p4 | params_flow.rb:30:18:30:20 | :p4 | | params_flow.rb:33:1:33:58 | call to kwargs | params_flow.rb:33:1:33:58 | call to kwargs | -| params_flow.rb:33:1:33:58 | synthetic hash-splat argument | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | | params_flow.rb:33:1:33:58 | synthetic hash-splat argument | params_flow.rb:25:17:25:24 | **kwargs | | params_flow.rb:33:1:33:58 | synthetic hash-splat argument | params_flow.rb:25:19:25:24 | kwargs | | params_flow.rb:33:1:33:58 | synthetic hash-splat argument | params_flow.rb:27:11:27:16 | kwargs | @@ -4523,7 +3894,6 @@ trackEnd | params_flow.rb:33:12:33:19 | call to taint | params_flow.rb:27:10:27:22 | ( ... ) | | params_flow.rb:33:12:33:19 | call to taint | params_flow.rb:27:11:27:21 | ...[...] | | params_flow.rb:33:12:33:19 | call to taint | params_flow.rb:33:12:33:19 | call to taint | -| params_flow.rb:33:12:33:19 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:33:12:33:19 | synthetic splat argument | params_flow.rb:33:12:33:19 | synthetic splat argument | | params_flow.rb:33:18:33:18 | 9 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:33:18:33:18 | 9 | params_flow.rb:1:11:1:11 | x | @@ -4546,7 +3916,6 @@ trackEnd | params_flow.rb:33:26:33:34 | call to taint | params_flow.rb:28:10:28:22 | ( ... ) | | params_flow.rb:33:26:33:34 | call to taint | params_flow.rb:28:11:28:21 | ...[...] | | params_flow.rb:33:26:33:34 | call to taint | params_flow.rb:33:26:33:34 | call to taint | -| params_flow.rb:33:26:33:34 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:33:26:33:34 | synthetic splat argument | params_flow.rb:33:26:33:34 | synthetic splat argument | | params_flow.rb:33:32:33:33 | 10 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:33:32:33:33 | 10 | params_flow.rb:1:11:1:11 | x | @@ -4566,7 +3935,6 @@ trackEnd | params_flow.rb:33:41:33:49 | call to taint | params_flow.rb:29:10:29:22 | ( ... ) | | params_flow.rb:33:41:33:49 | call to taint | params_flow.rb:29:11:29:21 | ...[...] | | params_flow.rb:33:41:33:49 | call to taint | params_flow.rb:33:41:33:49 | call to taint | -| params_flow.rb:33:41:33:49 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:33:41:33:49 | synthetic splat argument | params_flow.rb:33:41:33:49 | synthetic splat argument | | params_flow.rb:33:47:33:48 | 11 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:33:47:33:48 | 11 | params_flow.rb:1:11:1:11 | x | @@ -4605,7 +3973,6 @@ trackEnd | params_flow.rb:34:14:34:22 | call to taint | params_flow.rb:29:10:29:22 | ( ... ) | | params_flow.rb:34:14:34:22 | call to taint | params_flow.rb:29:11:29:21 | ...[...] | | params_flow.rb:34:14:34:22 | call to taint | params_flow.rb:34:14:34:22 | call to taint | -| params_flow.rb:34:14:34:22 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:34:14:34:22 | synthetic splat argument | params_flow.rb:34:14:34:22 | synthetic splat argument | | params_flow.rb:34:20:34:21 | 12 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:34:20:34:21 | 12 | params_flow.rb:1:11:1:11 | x | @@ -4626,7 +3993,6 @@ trackEnd | params_flow.rb:34:29:34:30 | "" | params_flow.rb:30:11:30:21 | ...[...] | | params_flow.rb:34:29:34:30 | "" | params_flow.rb:34:29:34:30 | "" | | params_flow.rb:35:1:35:29 | call to kwargs | params_flow.rb:35:1:35:29 | call to kwargs | -| params_flow.rb:35:1:35:29 | synthetic hash-splat argument | params_flow.rb:25:1:31:3 | synthetic hash-splat parameter | | params_flow.rb:35:1:35:29 | synthetic hash-splat argument | params_flow.rb:25:17:25:24 | **kwargs | | params_flow.rb:35:1:35:29 | synthetic hash-splat argument | params_flow.rb:25:19:25:24 | kwargs | | params_flow.rb:35:1:35:29 | synthetic hash-splat argument | params_flow.rb:27:11:27:16 | kwargs | @@ -4645,7 +4011,6 @@ trackEnd | params_flow.rb:35:12:35:20 | call to taint | params_flow.rb:27:10:27:22 | ( ... ) | | params_flow.rb:35:12:35:20 | call to taint | params_flow.rb:27:11:27:21 | ...[...] | | params_flow.rb:35:12:35:20 | call to taint | params_flow.rb:35:12:35:20 | call to taint | -| params_flow.rb:35:12:35:20 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:35:12:35:20 | synthetic splat argument | params_flow.rb:35:12:35:20 | synthetic splat argument | | params_flow.rb:35:18:35:19 | 13 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:35:18:35:19 | 13 | params_flow.rb:1:11:1:11 | x | @@ -4690,7 +4055,6 @@ trackEnd | params_flow.rb:37:16:37:24 | call to taint | params_flow.rb:27:10:27:22 | ( ... ) | | params_flow.rb:37:16:37:24 | call to taint | params_flow.rb:27:11:27:21 | ...[...] | | params_flow.rb:37:16:37:24 | call to taint | params_flow.rb:37:16:37:24 | call to taint | -| params_flow.rb:37:16:37:24 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:37:16:37:24 | synthetic splat argument | params_flow.rb:37:16:37:24 | synthetic splat argument | | params_flow.rb:37:22:37:23 | 14 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:37:22:37:23 | 14 | params_flow.rb:1:11:1:11 | x | @@ -4713,7 +4077,6 @@ trackEnd | params_flow.rb:37:34:37:42 | call to taint | params_flow.rb:28:10:28:22 | ( ... ) | | params_flow.rb:37:34:37:42 | call to taint | params_flow.rb:28:11:28:21 | ...[...] | | params_flow.rb:37:34:37:42 | call to taint | params_flow.rb:37:34:37:42 | call to taint | -| params_flow.rb:37:34:37:42 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:37:34:37:42 | synthetic splat argument | params_flow.rb:37:34:37:42 | synthetic splat argument | | params_flow.rb:37:40:37:41 | 15 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:37:40:37:41 | 15 | params_flow.rb:1:11:1:11 | x | @@ -4754,7 +4117,6 @@ trackEnd | params_flow.rb:40:16:40:24 | call to taint | params_flow.rb:16:13:16:14 | p1 | | params_flow.rb:40:16:40:24 | call to taint | params_flow.rb:17:10:17:11 | p1 | | params_flow.rb:40:16:40:24 | call to taint | params_flow.rb:40:16:40:24 | call to taint | -| params_flow.rb:40:16:40:24 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:40:16:40:24 | synthetic splat argument | params_flow.rb:40:16:40:24 | synthetic splat argument | | params_flow.rb:40:22:40:23 | 16 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:40:22:40:23 | 16 | params_flow.rb:1:11:1:11 | x | @@ -4768,7 +4130,6 @@ trackEnd | params_flow.rb:40:22:40:23 | 16 | params_flow.rb:40:16:40:24 | call to taint | | params_flow.rb:40:22:40:23 | 16 | params_flow.rb:40:22:40:23 | 16 | | params_flow.rb:41:1:41:30 | call to keyword | params_flow.rb:41:1:41:30 | call to keyword | -| params_flow.rb:41:1:41:30 | synthetic hash-splat argument | params_flow.rb:16:1:19:3 | synthetic hash-splat parameter | | params_flow.rb:41:1:41:30 | synthetic hash-splat argument | params_flow.rb:41:1:41:30 | synthetic hash-splat argument | | params_flow.rb:41:9:41:10 | :p2 | params_flow.rb:41:9:41:10 | :p2 | | params_flow.rb:41:9:41:21 | Pair | params_flow.rb:41:9:41:21 | Pair | @@ -4779,7 +4140,6 @@ trackEnd | params_flow.rb:41:13:41:21 | call to taint | params_flow.rb:16:18:16:19 | p2 | | params_flow.rb:41:13:41:21 | call to taint | params_flow.rb:18:10:18:11 | p2 | | params_flow.rb:41:13:41:21 | call to taint | params_flow.rb:41:13:41:21 | call to taint | -| params_flow.rb:41:13:41:21 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:41:13:41:21 | synthetic splat argument | params_flow.rb:41:13:41:21 | synthetic splat argument | | params_flow.rb:41:19:41:20 | 17 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:41:19:41:20 | 17 | params_flow.rb:1:11:1:11 | x | @@ -4824,7 +4184,6 @@ trackEnd | params_flow.rb:43:9:43:17 | call to taint | params_flow.rb:9:20:9:21 | p2 | | params_flow.rb:43:9:43:17 | call to taint | params_flow.rb:11:10:11:11 | p2 | | params_flow.rb:43:9:43:17 | call to taint | params_flow.rb:43:9:43:17 | call to taint | -| params_flow.rb:43:9:43:17 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:43:9:43:17 | synthetic splat argument | params_flow.rb:43:9:43:17 | synthetic splat argument | | params_flow.rb:43:15:43:16 | 17 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:43:15:43:16 | 17 | params_flow.rb:1:11:1:11 | x | @@ -4847,7 +4206,6 @@ trackEnd | params_flow.rb:44:12:44:20 | call to taint | params_flow.rb:9:16:9:17 | p1 | | params_flow.rb:44:12:44:20 | call to taint | params_flow.rb:10:10:10:11 | p1 | | params_flow.rb:44:12:44:20 | call to taint | params_flow.rb:44:12:44:20 | call to taint | -| params_flow.rb:44:12:44:20 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:44:12:44:20 | synthetic splat argument | params_flow.rb:44:12:44:20 | synthetic splat argument | | params_flow.rb:44:18:44:19 | 16 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:44:18:44:19 | 16 | params_flow.rb:1:11:1:11 | x | @@ -4891,7 +4249,6 @@ trackEnd | params_flow.rb:46:9:46:17 | call to taint | params_flow.rb:9:16:9:17 | p1 | | params_flow.rb:46:9:46:17 | call to taint | params_flow.rb:10:10:10:11 | p1 | | params_flow.rb:46:9:46:17 | call to taint | params_flow.rb:46:9:46:17 | call to taint | -| params_flow.rb:46:9:46:17 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:46:9:46:17 | synthetic splat argument | params_flow.rb:46:9:46:17 | synthetic splat argument | | params_flow.rb:46:15:46:16 | 18 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:46:15:46:16 | 18 | params_flow.rb:1:11:1:11 | x | @@ -4911,7 +4268,6 @@ trackEnd | params_flow.rb:46:20:46:28 | call to taint | params_flow.rb:9:20:9:21 | p2 | | params_flow.rb:46:20:46:28 | call to taint | params_flow.rb:11:10:11:11 | p2 | | params_flow.rb:46:20:46:28 | call to taint | params_flow.rb:46:20:46:28 | call to taint | -| params_flow.rb:46:20:46:28 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:46:20:46:28 | synthetic splat argument | params_flow.rb:46:20:46:28 | synthetic splat argument | | params_flow.rb:46:26:46:27 | 19 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:46:26:46:27 | 19 | params_flow.rb:1:11:1:11 | x | @@ -4951,10 +4307,8 @@ trackEnd | params_flow.rb:49:17:49:24 | *posargs | params_flow.rb:52:11:52:17 | posargs | | params_flow.rb:49:18:49:24 | posargs | params_flow.rb:49:18:49:24 | posargs | | params_flow.rb:50:5:50:11 | call to sink | params_flow.rb:50:5:50:11 | call to sink | -| params_flow.rb:50:5:50:11 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:50:5:50:11 | synthetic splat argument | params_flow.rb:50:5:50:11 | synthetic splat argument | | params_flow.rb:51:5:51:21 | call to sink | params_flow.rb:51:5:51:21 | call to sink | -| params_flow.rb:51:5:51:21 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:51:5:51:21 | synthetic splat argument | params_flow.rb:51:5:51:21 | synthetic splat argument | | params_flow.rb:51:11:51:20 | ...[...] | params_flow.rb:5:10:5:10 | x | | params_flow.rb:51:11:51:20 | ...[...] | params_flow.rb:5:10:5:10 | x | @@ -4967,7 +4321,6 @@ trackEnd | params_flow.rb:52:5:52:21 | call to sink | params_flow.rb:55:1:55:29 | call to posargs | | params_flow.rb:52:5:52:21 | call to sink | params_flow.rb:58:1:58:25 | call to posargs | | params_flow.rb:52:5:52:21 | call to sink | params_flow.rb:61:1:61:14 | call to posargs | -| params_flow.rb:52:5:52:21 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:52:5:52:21 | synthetic splat argument | params_flow.rb:52:5:52:21 | synthetic splat argument | | params_flow.rb:52:11:52:20 | ...[...] | params_flow.rb:5:10:5:10 | x | | params_flow.rb:52:11:52:20 | ...[...] | params_flow.rb:5:10:5:10 | x | @@ -4986,7 +4339,6 @@ trackEnd | params_flow.rb:55:9:55:17 | call to taint | params_flow.rb:49:13:49:14 | p1 | | params_flow.rb:55:9:55:17 | call to taint | params_flow.rb:50:10:50:11 | p1 | | params_flow.rb:55:9:55:17 | call to taint | params_flow.rb:55:9:55:17 | call to taint | -| params_flow.rb:55:9:55:17 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:55:9:55:17 | synthetic splat argument | params_flow.rb:55:9:55:17 | synthetic splat argument | | params_flow.rb:55:15:55:16 | 20 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:55:15:55:16 | 20 | params_flow.rb:1:11:1:11 | x | @@ -5005,7 +4357,6 @@ trackEnd | params_flow.rb:55:20:55:28 | call to taint | params_flow.rb:51:10:51:21 | ( ... ) | | params_flow.rb:55:20:55:28 | call to taint | params_flow.rb:51:11:51:20 | ...[...] | | params_flow.rb:55:20:55:28 | call to taint | params_flow.rb:55:20:55:28 | call to taint | -| params_flow.rb:55:20:55:28 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:55:20:55:28 | synthetic splat argument | params_flow.rb:55:20:55:28 | synthetic splat argument | | params_flow.rb:55:26:55:27 | 21 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:55:26:55:27 | 21 | params_flow.rb:1:11:1:11 | x | @@ -5044,7 +4395,6 @@ trackEnd | params_flow.rb:57:9:57:17 | call to taint | params_flow.rb:51:10:51:21 | ( ... ) | | params_flow.rb:57:9:57:17 | call to taint | params_flow.rb:51:11:51:20 | ...[...] | | params_flow.rb:57:9:57:17 | call to taint | params_flow.rb:57:9:57:17 | call to taint | -| params_flow.rb:57:9:57:17 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:57:9:57:17 | synthetic splat argument | params_flow.rb:57:9:57:17 | synthetic splat argument | | params_flow.rb:57:15:57:16 | 22 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:57:15:57:16 | 22 | params_flow.rb:1:11:1:11 | x | @@ -5057,7 +4407,6 @@ trackEnd | params_flow.rb:57:15:57:16 | 22 | params_flow.rb:57:9:57:17 | call to taint | | params_flow.rb:57:15:57:16 | 22 | params_flow.rb:57:15:57:16 | 22 | | params_flow.rb:58:1:58:25 | call to posargs | params_flow.rb:58:1:58:25 | call to posargs | -| params_flow.rb:58:1:58:25 | synthetic splat argument | params_flow.rb:49:1:53:3 | synthetic splat parameter | | params_flow.rb:58:1:58:25 | synthetic splat argument | params_flow.rb:58:1:58:25 | synthetic splat argument | | params_flow.rb:58:9:58:17 | call to taint | params_flow.rb:5:10:5:10 | x | | params_flow.rb:58:9:58:17 | call to taint | params_flow.rb:5:10:5:10 | x | @@ -5066,7 +4415,6 @@ trackEnd | params_flow.rb:58:9:58:17 | call to taint | params_flow.rb:49:13:49:14 | p1 | | params_flow.rb:58:9:58:17 | call to taint | params_flow.rb:50:10:50:11 | p1 | | params_flow.rb:58:9:58:17 | call to taint | params_flow.rb:58:9:58:17 | call to taint | -| params_flow.rb:58:9:58:17 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:58:9:58:17 | synthetic splat argument | params_flow.rb:58:9:58:17 | synthetic splat argument | | params_flow.rb:58:15:58:16 | 23 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:58:15:58:16 | 23 | params_flow.rb:1:11:1:11 | x | @@ -5114,7 +4462,6 @@ trackEnd | params_flow.rb:60:9:60:17 | call to taint | params_flow.rb:49:13:49:14 | p1 | | params_flow.rb:60:9:60:17 | call to taint | params_flow.rb:50:10:50:11 | p1 | | params_flow.rb:60:9:60:17 | call to taint | params_flow.rb:60:9:60:17 | call to taint | -| params_flow.rb:60:9:60:17 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:60:9:60:17 | synthetic splat argument | params_flow.rb:60:9:60:17 | synthetic splat argument | | params_flow.rb:60:15:60:16 | 24 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:60:15:60:16 | 24 | params_flow.rb:1:11:1:11 | x | @@ -5133,7 +4480,6 @@ trackEnd | params_flow.rb:60:20:60:28 | call to taint | params_flow.rb:51:10:51:21 | ( ... ) | | params_flow.rb:60:20:60:28 | call to taint | params_flow.rb:51:11:51:20 | ...[...] | | params_flow.rb:60:20:60:28 | call to taint | params_flow.rb:60:20:60:28 | call to taint | -| params_flow.rb:60:20:60:28 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:60:20:60:28 | synthetic splat argument | params_flow.rb:60:20:60:28 | synthetic splat argument | | params_flow.rb:60:26:60:27 | 25 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:60:26:60:27 | 25 | params_flow.rb:1:11:1:11 | x | @@ -5157,7 +4503,6 @@ trackEnd | params_flow.rb:63:8:63:16 | call to taint | params_flow.rb:63:8:63:16 | call to taint | | params_flow.rb:63:8:63:16 | call to taint | params_flow.rb:65:10:65:13 | ...[...] | | params_flow.rb:63:8:63:16 | call to taint | params_flow.rb:67:13:67:16 | args | -| params_flow.rb:63:8:63:16 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:63:8:63:16 | synthetic splat argument | params_flow.rb:63:8:63:16 | synthetic splat argument | | params_flow.rb:63:14:63:15 | 26 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:63:14:63:15 | 26 | params_flow.rb:1:11:1:11 | x | @@ -5185,7 +4530,6 @@ trackEnd | params_flow.rb:64:17:64:17 | x | params_flow.rb:64:17:64:17 | x | | params_flow.rb:65:5:65:13 | call to sink | params_flow.rb:65:5:65:13 | call to sink | | params_flow.rb:65:5:65:13 | call to sink | params_flow.rb:67:1:67:17 | call to splatstuff | -| params_flow.rb:65:5:65:13 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:65:5:65:13 | synthetic splat argument | params_flow.rb:65:5:65:13 | synthetic splat argument | | params_flow.rb:65:10:65:13 | ...[...] | params_flow.rb:5:10:5:10 | x | | params_flow.rb:65:10:65:13 | ...[...] | params_flow.rb:5:10:5:10 | x | @@ -5246,13 +4590,10 @@ trackEnd | params_flow.rb:69:27:69:27 | r | params_flow.rb:69:27:69:27 | r | | params_flow.rb:69:27:69:27 | r | params_flow.rb:75:10:75:10 | r | | params_flow.rb:70:5:70:10 | call to sink | params_flow.rb:70:5:70:10 | call to sink | -| params_flow.rb:70:5:70:10 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:70:5:70:10 | synthetic splat argument | params_flow.rb:70:5:70:10 | synthetic splat argument | | params_flow.rb:71:5:71:10 | call to sink | params_flow.rb:71:5:71:10 | call to sink | -| params_flow.rb:71:5:71:10 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:71:5:71:10 | synthetic splat argument | params_flow.rb:71:5:71:10 | synthetic splat argument | | params_flow.rb:72:5:72:13 | call to sink | params_flow.rb:72:5:72:13 | call to sink | -| params_flow.rb:72:5:72:13 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:72:5:72:13 | synthetic splat argument | params_flow.rb:72:5:72:13 | synthetic splat argument | | params_flow.rb:72:10:72:13 | ...[...] | params_flow.rb:5:10:5:10 | x | | params_flow.rb:72:10:72:13 | ...[...] | params_flow.rb:5:10:5:10 | x | @@ -5261,7 +4602,6 @@ trackEnd | params_flow.rb:72:10:72:13 | synthetic splat argument | params_flow.rb:72:10:72:13 | synthetic splat argument | | params_flow.rb:72:12:72:12 | 0 | params_flow.rb:72:12:72:12 | 0 | | params_flow.rb:73:5:73:13 | call to sink | params_flow.rb:73:5:73:13 | call to sink | -| params_flow.rb:73:5:73:13 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:73:5:73:13 | synthetic splat argument | params_flow.rb:73:5:73:13 | synthetic splat argument | | params_flow.rb:73:10:73:13 | ...[...] | params_flow.rb:5:10:5:10 | x | | params_flow.rb:73:10:73:13 | ...[...] | params_flow.rb:5:10:5:10 | x | @@ -5270,13 +4610,11 @@ trackEnd | params_flow.rb:73:10:73:13 | synthetic splat argument | params_flow.rb:73:10:73:13 | synthetic splat argument | | params_flow.rb:73:12:73:12 | 1 | params_flow.rb:73:12:73:12 | 1 | | params_flow.rb:74:5:74:10 | call to sink | params_flow.rb:74:5:74:10 | call to sink | -| params_flow.rb:74:5:74:10 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:74:5:74:10 | synthetic splat argument | params_flow.rb:74:5:74:10 | synthetic splat argument | | params_flow.rb:75:5:75:10 | call to sink | params_flow.rb:75:5:75:10 | call to sink | | params_flow.rb:75:5:75:10 | call to sink | params_flow.rb:78:1:78:63 | call to splatmid | | params_flow.rb:75:5:75:10 | call to sink | params_flow.rb:81:1:81:37 | call to splatmid | | params_flow.rb:75:5:75:10 | call to sink | params_flow.rb:96:1:96:88 | call to splatmid | -| params_flow.rb:75:5:75:10 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:75:5:75:10 | synthetic splat argument | params_flow.rb:75:5:75:10 | synthetic splat argument | | params_flow.rb:78:1:78:63 | call to splatmid | params_flow.rb:78:1:78:63 | call to splatmid | | params_flow.rb:78:1:78:63 | synthetic splat argument | params_flow.rb:69:1:76:3 | synthetic splat parameter | @@ -5288,7 +4626,6 @@ trackEnd | params_flow.rb:78:10:78:18 | call to taint | params_flow.rb:69:14:69:14 | x | | params_flow.rb:78:10:78:18 | call to taint | params_flow.rb:70:10:70:10 | x | | params_flow.rb:78:10:78:18 | call to taint | params_flow.rb:78:10:78:18 | call to taint | -| params_flow.rb:78:10:78:18 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:78:10:78:18 | synthetic splat argument | params_flow.rb:78:10:78:18 | synthetic splat argument | | params_flow.rb:78:16:78:17 | 27 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:78:16:78:17 | 27 | params_flow.rb:1:11:1:11 | x | @@ -5308,7 +4645,6 @@ trackEnd | params_flow.rb:78:21:78:29 | call to taint | params_flow.rb:69:17:69:17 | y | | params_flow.rb:78:21:78:29 | call to taint | params_flow.rb:71:10:71:10 | y | | params_flow.rb:78:21:78:29 | call to taint | params_flow.rb:78:21:78:29 | call to taint | -| params_flow.rb:78:21:78:29 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:78:21:78:29 | synthetic splat argument | params_flow.rb:78:21:78:29 | synthetic splat argument | | params_flow.rb:78:27:78:28 | 28 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:78:27:78:28 | 28 | params_flow.rb:1:11:1:11 | x | @@ -5322,51 +4658,24 @@ trackEnd | params_flow.rb:78:27:78:28 | 28 | params_flow.rb:78:21:78:29 | call to taint | | params_flow.rb:78:27:78:28 | 28 | params_flow.rb:78:27:78:28 | 28 | | params_flow.rb:78:32:78:40 | call to taint | params_flow.rb:78:32:78:40 | call to taint | -| params_flow.rb:78:32:78:40 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:78:32:78:40 | synthetic splat argument | params_flow.rb:78:32:78:40 | synthetic splat argument | | params_flow.rb:78:38:78:39 | 29 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:78:38:78:39 | 29 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:78:38:78:39 | 29 | params_flow.rb:2:5:2:5 | x | | params_flow.rb:78:38:78:39 | 29 | params_flow.rb:78:32:78:40 | call to taint | | params_flow.rb:78:38:78:39 | 29 | params_flow.rb:78:38:78:39 | 29 | -| params_flow.rb:78:43:78:51 | call to taint | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:78:43:78:51 | call to taint | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:78:43:78:51 | call to taint | params_flow.rb:6:10:6:10 | x | -| params_flow.rb:78:43:78:51 | call to taint | params_flow.rb:69:24:69:24 | w | -| params_flow.rb:78:43:78:51 | call to taint | params_flow.rb:69:24:69:24 | w | -| params_flow.rb:78:43:78:51 | call to taint | params_flow.rb:74:10:74:10 | w | | params_flow.rb:78:43:78:51 | call to taint | params_flow.rb:78:43:78:51 | call to taint | -| params_flow.rb:78:43:78:51 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:78:43:78:51 | synthetic splat argument | params_flow.rb:78:43:78:51 | synthetic splat argument | | params_flow.rb:78:49:78:50 | 30 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:78:49:78:50 | 30 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:78:49:78:50 | 30 | params_flow.rb:2:5:2:5 | x | -| params_flow.rb:78:49:78:50 | 30 | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:78:49:78:50 | 30 | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:78:49:78:50 | 30 | params_flow.rb:6:10:6:10 | x | -| params_flow.rb:78:49:78:50 | 30 | params_flow.rb:69:24:69:24 | w | -| params_flow.rb:78:49:78:50 | 30 | params_flow.rb:69:24:69:24 | w | -| params_flow.rb:78:49:78:50 | 30 | params_flow.rb:74:10:74:10 | w | | params_flow.rb:78:49:78:50 | 30 | params_flow.rb:78:43:78:51 | call to taint | | params_flow.rb:78:49:78:50 | 30 | params_flow.rb:78:49:78:50 | 30 | -| params_flow.rb:78:54:78:62 | call to taint | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:78:54:78:62 | call to taint | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:78:54:78:62 | call to taint | params_flow.rb:6:10:6:10 | x | -| params_flow.rb:78:54:78:62 | call to taint | params_flow.rb:69:27:69:27 | r | -| params_flow.rb:78:54:78:62 | call to taint | params_flow.rb:69:27:69:27 | r | -| params_flow.rb:78:54:78:62 | call to taint | params_flow.rb:75:10:75:10 | r | | params_flow.rb:78:54:78:62 | call to taint | params_flow.rb:78:54:78:62 | call to taint | -| params_flow.rb:78:54:78:62 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:78:54:78:62 | synthetic splat argument | params_flow.rb:78:54:78:62 | synthetic splat argument | | params_flow.rb:78:60:78:61 | 31 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:78:60:78:61 | 31 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:78:60:78:61 | 31 | params_flow.rb:2:5:2:5 | x | -| params_flow.rb:78:60:78:61 | 31 | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:78:60:78:61 | 31 | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:78:60:78:61 | 31 | params_flow.rb:6:10:6:10 | x | -| params_flow.rb:78:60:78:61 | 31 | params_flow.rb:69:27:69:27 | r | -| params_flow.rb:78:60:78:61 | 31 | params_flow.rb:69:27:69:27 | r | -| params_flow.rb:78:60:78:61 | 31 | params_flow.rb:75:10:75:10 | r | | params_flow.rb:78:60:78:61 | 31 | params_flow.rb:78:54:78:62 | call to taint | | params_flow.rb:78:60:78:61 | 31 | params_flow.rb:78:60:78:61 | 31 | | params_flow.rb:80:1:80:4 | args | params_flow.rb:80:1:80:4 | args | @@ -5399,7 +4708,6 @@ trackEnd | params_flow.rb:80:9:80:17 | call to taint | params_flow.rb:69:17:69:17 | y | | params_flow.rb:80:9:80:17 | call to taint | params_flow.rb:71:10:71:10 | y | | params_flow.rb:80:9:80:17 | call to taint | params_flow.rb:80:9:80:17 | call to taint | -| params_flow.rb:80:9:80:17 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:80:9:80:17 | synthetic splat argument | params_flow.rb:80:9:80:17 | synthetic splat argument | | params_flow.rb:80:15:80:16 | 33 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:80:15:80:16 | 33 | params_flow.rb:1:11:1:11 | x | @@ -5413,7 +4721,6 @@ trackEnd | params_flow.rb:80:15:80:16 | 33 | params_flow.rb:80:9:80:17 | call to taint | | params_flow.rb:80:15:80:16 | 33 | params_flow.rb:80:15:80:16 | 33 | | params_flow.rb:80:20:80:28 | call to taint | params_flow.rb:80:20:80:28 | call to taint | -| params_flow.rb:80:20:80:28 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:80:20:80:28 | synthetic splat argument | params_flow.rb:80:20:80:28 | synthetic splat argument | | params_flow.rb:80:26:80:27 | 34 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:80:26:80:27 | 34 | params_flow.rb:1:11:1:11 | x | @@ -5421,7 +4728,6 @@ trackEnd | params_flow.rb:80:26:80:27 | 34 | params_flow.rb:80:20:80:28 | call to taint | | params_flow.rb:80:26:80:27 | 34 | params_flow.rb:80:26:80:27 | 34 | | params_flow.rb:80:31:80:39 | call to taint | params_flow.rb:80:31:80:39 | call to taint | -| params_flow.rb:80:31:80:39 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:80:31:80:39 | synthetic splat argument | params_flow.rb:80:31:80:39 | synthetic splat argument | | params_flow.rb:80:37:80:38 | 35 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:80:37:80:38 | 35 | params_flow.rb:1:11:1:11 | x | @@ -5429,7 +4735,6 @@ trackEnd | params_flow.rb:80:37:80:38 | 35 | params_flow.rb:80:31:80:39 | call to taint | | params_flow.rb:80:37:80:38 | 35 | params_flow.rb:80:37:80:38 | 35 | | params_flow.rb:80:42:80:50 | call to taint | params_flow.rb:80:42:80:50 | call to taint | -| params_flow.rb:80:42:80:50 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:80:42:80:50 | synthetic splat argument | params_flow.rb:80:42:80:50 | synthetic splat argument | | params_flow.rb:80:48:80:49 | 36 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:80:48:80:49 | 36 | params_flow.rb:1:11:1:11 | x | @@ -5446,7 +4751,6 @@ trackEnd | params_flow.rb:81:10:81:18 | call to taint | params_flow.rb:69:14:69:14 | x | | params_flow.rb:81:10:81:18 | call to taint | params_flow.rb:70:10:70:10 | x | | params_flow.rb:81:10:81:18 | call to taint | params_flow.rb:81:10:81:18 | call to taint | -| params_flow.rb:81:10:81:18 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:81:10:81:18 | synthetic splat argument | params_flow.rb:81:10:81:18 | synthetic splat argument | | params_flow.rb:81:16:81:17 | 32 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:81:16:81:17 | 32 | params_flow.rb:1:11:1:11 | x | @@ -5461,7 +4765,6 @@ trackEnd | params_flow.rb:81:16:81:17 | 32 | params_flow.rb:81:16:81:17 | 32 | | params_flow.rb:81:21:81:25 | * ... | params_flow.rb:81:21:81:25 | * ... | | params_flow.rb:81:28:81:36 | call to taint | params_flow.rb:81:28:81:36 | call to taint | -| params_flow.rb:81:28:81:36 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:81:28:81:36 | synthetic splat argument | params_flow.rb:81:28:81:36 | synthetic splat argument | | params_flow.rb:81:34:81:35 | 37 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:81:34:81:35 | 37 | params_flow.rb:1:11:1:11 | x | @@ -5533,27 +4836,20 @@ trackEnd | params_flow.rb:83:32:83:32 | z | params_flow.rb:83:32:83:32 | z | | params_flow.rb:83:32:83:32 | z | params_flow.rb:90:10:90:10 | z | | params_flow.rb:84:5:84:10 | call to sink | params_flow.rb:84:5:84:10 | call to sink | -| params_flow.rb:84:5:84:10 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:84:5:84:10 | synthetic splat argument | params_flow.rb:84:5:84:10 | synthetic splat argument | | params_flow.rb:85:5:85:10 | call to sink | params_flow.rb:85:5:85:10 | call to sink | -| params_flow.rb:85:5:85:10 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:85:5:85:10 | synthetic splat argument | params_flow.rb:85:5:85:10 | synthetic splat argument | | params_flow.rb:86:5:86:10 | call to sink | params_flow.rb:86:5:86:10 | call to sink | -| params_flow.rb:86:5:86:10 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:86:5:86:10 | synthetic splat argument | params_flow.rb:86:5:86:10 | synthetic splat argument | | params_flow.rb:87:5:87:10 | call to sink | params_flow.rb:87:5:87:10 | call to sink | -| params_flow.rb:87:5:87:10 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:87:5:87:10 | synthetic splat argument | params_flow.rb:87:5:87:10 | synthetic splat argument | | params_flow.rb:88:5:88:10 | call to sink | params_flow.rb:88:5:88:10 | call to sink | -| params_flow.rb:88:5:88:10 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:88:5:88:10 | synthetic splat argument | params_flow.rb:88:5:88:10 | synthetic splat argument | | params_flow.rb:89:5:89:10 | call to sink | params_flow.rb:89:5:89:10 | call to sink | -| params_flow.rb:89:5:89:10 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:89:5:89:10 | synthetic splat argument | params_flow.rb:89:5:89:10 | synthetic splat argument | | params_flow.rb:90:5:90:10 | call to sink | params_flow.rb:90:5:90:10 | call to sink | | params_flow.rb:90:5:90:10 | call to sink | params_flow.rb:94:1:94:48 | call to pos_many | | params_flow.rb:90:5:90:10 | call to sink | params_flow.rb:131:1:131:46 | call to pos_many | -| params_flow.rb:90:5:90:10 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:90:5:90:10 | synthetic splat argument | params_flow.rb:90:5:90:10 | synthetic splat argument | | params_flow.rb:93:1:93:4 | args | params_flow.rb:93:1:93:4 | args | | params_flow.rb:93:8:93:51 | Array | params_flow.rb:93:8:93:51 | Array | @@ -5585,7 +4881,6 @@ trackEnd | params_flow.rb:93:9:93:17 | call to taint | params_flow.rb:83:20:83:20 | v | | params_flow.rb:93:9:93:17 | call to taint | params_flow.rb:86:10:86:10 | v | | params_flow.rb:93:9:93:17 | call to taint | params_flow.rb:93:9:93:17 | call to taint | -| params_flow.rb:93:9:93:17 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:93:9:93:17 | synthetic splat argument | params_flow.rb:93:9:93:17 | synthetic splat argument | | params_flow.rb:93:15:93:16 | 40 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:93:15:93:16 | 40 | params_flow.rb:1:11:1:11 | x | @@ -5605,7 +4900,6 @@ trackEnd | params_flow.rb:93:20:93:28 | call to taint | params_flow.rb:83:23:83:23 | w | | params_flow.rb:93:20:93:28 | call to taint | params_flow.rb:87:10:87:10 | w | | params_flow.rb:93:20:93:28 | call to taint | params_flow.rb:93:20:93:28 | call to taint | -| params_flow.rb:93:20:93:28 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:93:20:93:28 | synthetic splat argument | params_flow.rb:93:20:93:28 | synthetic splat argument | | params_flow.rb:93:26:93:27 | 41 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:93:26:93:27 | 41 | params_flow.rb:1:11:1:11 | x | @@ -5625,7 +4919,6 @@ trackEnd | params_flow.rb:93:31:93:39 | call to taint | params_flow.rb:83:26:83:26 | x | | params_flow.rb:93:31:93:39 | call to taint | params_flow.rb:88:10:88:10 | x | | params_flow.rb:93:31:93:39 | call to taint | params_flow.rb:93:31:93:39 | call to taint | -| params_flow.rb:93:31:93:39 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:93:31:93:39 | synthetic splat argument | params_flow.rb:93:31:93:39 | synthetic splat argument | | params_flow.rb:93:37:93:38 | 42 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:93:37:93:38 | 42 | params_flow.rb:1:11:1:11 | x | @@ -5645,7 +4938,6 @@ trackEnd | params_flow.rb:93:42:93:50 | call to taint | params_flow.rb:83:29:83:29 | y | | params_flow.rb:93:42:93:50 | call to taint | params_flow.rb:89:10:89:10 | y | | params_flow.rb:93:42:93:50 | call to taint | params_flow.rb:93:42:93:50 | call to taint | -| params_flow.rb:93:42:93:50 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:93:42:93:50 | synthetic splat argument | params_flow.rb:93:42:93:50 | synthetic splat argument | | params_flow.rb:93:48:93:49 | 43 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:93:48:93:49 | 43 | params_flow.rb:1:11:1:11 | x | @@ -5668,7 +4960,6 @@ trackEnd | params_flow.rb:94:10:94:18 | call to taint | params_flow.rb:83:14:83:14 | t | | params_flow.rb:94:10:94:18 | call to taint | params_flow.rb:84:10:84:10 | t | | params_flow.rb:94:10:94:18 | call to taint | params_flow.rb:94:10:94:18 | call to taint | -| params_flow.rb:94:10:94:18 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:94:10:94:18 | synthetic splat argument | params_flow.rb:94:10:94:18 | synthetic splat argument | | params_flow.rb:94:16:94:17 | 38 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:94:16:94:17 | 38 | params_flow.rb:1:11:1:11 | x | @@ -5688,7 +4979,6 @@ trackEnd | params_flow.rb:94:21:94:29 | call to taint | params_flow.rb:83:17:83:17 | u | | params_flow.rb:94:21:94:29 | call to taint | params_flow.rb:85:10:85:10 | u | | params_flow.rb:94:21:94:29 | call to taint | params_flow.rb:94:21:94:29 | call to taint | -| params_flow.rb:94:21:94:29 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:94:21:94:29 | synthetic splat argument | params_flow.rb:94:21:94:29 | synthetic splat argument | | params_flow.rb:94:27:94:28 | 39 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:94:27:94:28 | 39 | params_flow.rb:1:11:1:11 | x | @@ -5702,28 +4992,14 @@ trackEnd | params_flow.rb:94:27:94:28 | 39 | params_flow.rb:94:21:94:29 | call to taint | | params_flow.rb:94:27:94:28 | 39 | params_flow.rb:94:27:94:28 | 39 | | params_flow.rb:94:32:94:36 | * ... | params_flow.rb:94:32:94:36 | * ... | -| params_flow.rb:94:39:94:47 | call to taint | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:94:39:94:47 | call to taint | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:94:39:94:47 | call to taint | params_flow.rb:6:10:6:10 | x | -| params_flow.rb:94:39:94:47 | call to taint | params_flow.rb:83:23:83:23 | w | -| params_flow.rb:94:39:94:47 | call to taint | params_flow.rb:83:23:83:23 | w | -| params_flow.rb:94:39:94:47 | call to taint | params_flow.rb:87:10:87:10 | w | | params_flow.rb:94:39:94:47 | call to taint | params_flow.rb:94:39:94:47 | call to taint | -| params_flow.rb:94:39:94:47 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:94:39:94:47 | synthetic splat argument | params_flow.rb:94:39:94:47 | synthetic splat argument | | params_flow.rb:94:45:94:46 | 44 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:94:45:94:46 | 44 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:94:45:94:46 | 44 | params_flow.rb:2:5:2:5 | x | -| params_flow.rb:94:45:94:46 | 44 | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:94:45:94:46 | 44 | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:94:45:94:46 | 44 | params_flow.rb:6:10:6:10 | x | -| params_flow.rb:94:45:94:46 | 44 | params_flow.rb:83:23:83:23 | w | -| params_flow.rb:94:45:94:46 | 44 | params_flow.rb:83:23:83:23 | w | -| params_flow.rb:94:45:94:46 | 44 | params_flow.rb:87:10:87:10 | w | | params_flow.rb:94:45:94:46 | 44 | params_flow.rb:94:39:94:47 | call to taint | | params_flow.rb:94:45:94:46 | 44 | params_flow.rb:94:45:94:46 | 44 | | params_flow.rb:96:1:96:88 | call to splatmid | params_flow.rb:96:1:96:88 | call to splatmid | -| params_flow.rb:96:1:96:88 | synthetic splat argument | params_flow.rb:69:1:76:3 | synthetic splat parameter | | params_flow.rb:96:1:96:88 | synthetic splat argument | params_flow.rb:96:1:96:88 | synthetic splat argument | | params_flow.rb:96:10:96:18 | call to taint | params_flow.rb:5:10:5:10 | x | | params_flow.rb:96:10:96:18 | call to taint | params_flow.rb:5:10:5:10 | x | @@ -5732,7 +5008,6 @@ trackEnd | params_flow.rb:96:10:96:18 | call to taint | params_flow.rb:69:14:69:14 | x | | params_flow.rb:96:10:96:18 | call to taint | params_flow.rb:70:10:70:10 | x | | params_flow.rb:96:10:96:18 | call to taint | params_flow.rb:96:10:96:18 | call to taint | -| params_flow.rb:96:10:96:18 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:96:10:96:18 | synthetic splat argument | params_flow.rb:96:10:96:18 | synthetic splat argument | | params_flow.rb:96:16:96:17 | 45 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:96:16:96:17 | 45 | params_flow.rb:1:11:1:11 | x | @@ -5752,7 +5027,6 @@ trackEnd | params_flow.rb:96:21:96:29 | call to taint | params_flow.rb:69:17:69:17 | y | | params_flow.rb:96:21:96:29 | call to taint | params_flow.rb:71:10:71:10 | y | | params_flow.rb:96:21:96:29 | call to taint | params_flow.rb:96:21:96:29 | call to taint | -| params_flow.rb:96:21:96:29 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:96:21:96:29 | synthetic splat argument | params_flow.rb:96:21:96:29 | synthetic splat argument | | params_flow.rb:96:27:96:28 | 46 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:96:27:96:28 | 46 | params_flow.rb:1:11:1:11 | x | @@ -5771,7 +5045,6 @@ trackEnd | params_flow.rb:96:33:96:65 | synthetic splat argument | params_flow.rb:96:33:96:65 | call to [] | | params_flow.rb:96:33:96:65 | synthetic splat argument | params_flow.rb:96:33:96:65 | synthetic splat argument | | params_flow.rb:96:34:96:42 | call to taint | params_flow.rb:96:34:96:42 | call to taint | -| params_flow.rb:96:34:96:42 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:96:34:96:42 | synthetic splat argument | params_flow.rb:96:34:96:42 | synthetic splat argument | | params_flow.rb:96:40:96:41 | 47 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:96:40:96:41 | 47 | params_flow.rb:1:11:1:11 | x | @@ -5779,7 +5052,6 @@ trackEnd | params_flow.rb:96:40:96:41 | 47 | params_flow.rb:96:34:96:42 | call to taint | | params_flow.rb:96:40:96:41 | 47 | params_flow.rb:96:40:96:41 | 47 | | params_flow.rb:96:45:96:53 | call to taint | params_flow.rb:96:45:96:53 | call to taint | -| params_flow.rb:96:45:96:53 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:96:45:96:53 | synthetic splat argument | params_flow.rb:96:45:96:53 | synthetic splat argument | | params_flow.rb:96:51:96:52 | 48 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:96:51:96:52 | 48 | params_flow.rb:1:11:1:11 | x | @@ -5787,51 +5059,24 @@ trackEnd | params_flow.rb:96:51:96:52 | 48 | params_flow.rb:96:45:96:53 | call to taint | | params_flow.rb:96:51:96:52 | 48 | params_flow.rb:96:51:96:52 | 48 | | params_flow.rb:96:56:96:64 | call to taint | params_flow.rb:96:56:96:64 | call to taint | -| params_flow.rb:96:56:96:64 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:96:56:96:64 | synthetic splat argument | params_flow.rb:96:56:96:64 | synthetic splat argument | | params_flow.rb:96:62:96:63 | 49 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:96:62:96:63 | 49 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:96:62:96:63 | 49 | params_flow.rb:2:5:2:5 | x | | params_flow.rb:96:62:96:63 | 49 | params_flow.rb:96:56:96:64 | call to taint | | params_flow.rb:96:62:96:63 | 49 | params_flow.rb:96:62:96:63 | 49 | -| params_flow.rb:96:68:96:76 | call to taint | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:96:68:96:76 | call to taint | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:96:68:96:76 | call to taint | params_flow.rb:6:10:6:10 | x | -| params_flow.rb:96:68:96:76 | call to taint | params_flow.rb:69:24:69:24 | w | -| params_flow.rb:96:68:96:76 | call to taint | params_flow.rb:69:24:69:24 | w | -| params_flow.rb:96:68:96:76 | call to taint | params_flow.rb:74:10:74:10 | w | | params_flow.rb:96:68:96:76 | call to taint | params_flow.rb:96:68:96:76 | call to taint | -| params_flow.rb:96:68:96:76 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:96:68:96:76 | synthetic splat argument | params_flow.rb:96:68:96:76 | synthetic splat argument | | params_flow.rb:96:74:96:75 | 50 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:96:74:96:75 | 50 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:96:74:96:75 | 50 | params_flow.rb:2:5:2:5 | x | -| params_flow.rb:96:74:96:75 | 50 | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:96:74:96:75 | 50 | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:96:74:96:75 | 50 | params_flow.rb:6:10:6:10 | x | -| params_flow.rb:96:74:96:75 | 50 | params_flow.rb:69:24:69:24 | w | -| params_flow.rb:96:74:96:75 | 50 | params_flow.rb:69:24:69:24 | w | -| params_flow.rb:96:74:96:75 | 50 | params_flow.rb:74:10:74:10 | w | | params_flow.rb:96:74:96:75 | 50 | params_flow.rb:96:68:96:76 | call to taint | | params_flow.rb:96:74:96:75 | 50 | params_flow.rb:96:74:96:75 | 50 | -| params_flow.rb:96:79:96:87 | call to taint | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:96:79:96:87 | call to taint | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:96:79:96:87 | call to taint | params_flow.rb:6:10:6:10 | x | -| params_flow.rb:96:79:96:87 | call to taint | params_flow.rb:69:27:69:27 | r | -| params_flow.rb:96:79:96:87 | call to taint | params_flow.rb:69:27:69:27 | r | -| params_flow.rb:96:79:96:87 | call to taint | params_flow.rb:75:10:75:10 | r | | params_flow.rb:96:79:96:87 | call to taint | params_flow.rb:96:79:96:87 | call to taint | -| params_flow.rb:96:79:96:87 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:96:79:96:87 | synthetic splat argument | params_flow.rb:96:79:96:87 | synthetic splat argument | | params_flow.rb:96:85:96:86 | 51 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:96:85:96:86 | 51 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:96:85:96:86 | 51 | params_flow.rb:2:5:2:5 | x | -| params_flow.rb:96:85:96:86 | 51 | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:96:85:96:86 | 51 | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:96:85:96:86 | 51 | params_flow.rb:6:10:6:10 | x | -| params_flow.rb:96:85:96:86 | 51 | params_flow.rb:69:27:69:27 | r | -| params_flow.rb:96:85:96:86 | 51 | params_flow.rb:69:27:69:27 | r | -| params_flow.rb:96:85:96:86 | 51 | params_flow.rb:75:10:75:10 | r | | params_flow.rb:96:85:96:86 | 51 | params_flow.rb:96:79:96:87 | call to taint | | params_flow.rb:96:85:96:86 | 51 | params_flow.rb:96:85:96:86 | 51 | | params_flow.rb:98:1:103:3 | &block | params_flow.rb:98:1:103:3 | &block | @@ -5866,10 +5111,8 @@ trackEnd | params_flow.rb:98:31:98:31 | b | params_flow.rb:98:31:98:31 | b | | params_flow.rb:98:31:98:31 | b | params_flow.rb:102:10:102:10 | b | | params_flow.rb:99:5:99:10 | call to sink | params_flow.rb:99:5:99:10 | call to sink | -| params_flow.rb:99:5:99:10 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:99:5:99:10 | synthetic splat argument | params_flow.rb:99:5:99:10 | synthetic splat argument | | params_flow.rb:100:5:100:18 | call to sink | params_flow.rb:100:5:100:18 | call to sink | -| params_flow.rb:100:5:100:18 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:100:5:100:18 | synthetic splat argument | params_flow.rb:100:5:100:18 | synthetic splat argument | | params_flow.rb:100:10:100:18 | ...[...] | params_flow.rb:5:10:5:10 | x | | params_flow.rb:100:10:100:18 | ...[...] | params_flow.rb:5:10:5:10 | x | @@ -5878,7 +5121,6 @@ trackEnd | params_flow.rb:100:10:100:18 | synthetic splat argument | params_flow.rb:100:10:100:18 | synthetic splat argument | | params_flow.rb:100:17:100:17 | 0 | params_flow.rb:100:17:100:17 | 0 | | params_flow.rb:101:5:101:18 | call to sink | params_flow.rb:101:5:101:18 | call to sink | -| params_flow.rb:101:5:101:18 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:101:5:101:18 | synthetic splat argument | params_flow.rb:101:5:101:18 | synthetic splat argument | | params_flow.rb:101:10:101:18 | ...[...] | params_flow.rb:5:10:5:10 | x | | params_flow.rb:101:10:101:18 | ...[...] | params_flow.rb:5:10:5:10 | x | @@ -5889,10 +5131,8 @@ trackEnd | params_flow.rb:102:5:102:10 | call to sink | params_flow.rb:102:5:102:10 | call to sink | | params_flow.rb:102:5:102:10 | call to sink | params_flow.rb:105:1:105:49 | call to splatmidsmall | | params_flow.rb:102:5:102:10 | call to sink | params_flow.rb:106:1:106:46 | call to splatmidsmall | -| params_flow.rb:102:5:102:10 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:102:5:102:10 | synthetic splat argument | params_flow.rb:102:5:102:10 | synthetic splat argument | | params_flow.rb:105:1:105:49 | call to splatmidsmall | params_flow.rb:105:1:105:49 | call to splatmidsmall | -| params_flow.rb:105:1:105:49 | synthetic splat argument | params_flow.rb:98:1:103:3 | synthetic splat parameter | | params_flow.rb:105:1:105:49 | synthetic splat argument | params_flow.rb:105:1:105:49 | synthetic splat argument | | params_flow.rb:105:15:105:23 | call to taint | params_flow.rb:5:10:5:10 | x | | params_flow.rb:105:15:105:23 | call to taint | params_flow.rb:5:10:5:10 | x | @@ -5901,7 +5141,6 @@ trackEnd | params_flow.rb:105:15:105:23 | call to taint | params_flow.rb:98:19:98:19 | a | | params_flow.rb:105:15:105:23 | call to taint | params_flow.rb:99:10:99:10 | a | | params_flow.rb:105:15:105:23 | call to taint | params_flow.rb:105:15:105:23 | call to taint | -| params_flow.rb:105:15:105:23 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:105:15:105:23 | synthetic splat argument | params_flow.rb:105:15:105:23 | synthetic splat argument | | params_flow.rb:105:21:105:22 | 52 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:105:21:105:22 | 52 | params_flow.rb:1:11:1:11 | x | @@ -5920,7 +5159,6 @@ trackEnd | params_flow.rb:105:27:105:48 | synthetic splat argument | params_flow.rb:105:27:105:48 | call to [] | | params_flow.rb:105:27:105:48 | synthetic splat argument | params_flow.rb:105:27:105:48 | synthetic splat argument | | params_flow.rb:105:28:105:36 | call to taint | params_flow.rb:105:28:105:36 | call to taint | -| params_flow.rb:105:28:105:36 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:105:28:105:36 | synthetic splat argument | params_flow.rb:105:28:105:36 | synthetic splat argument | | params_flow.rb:105:34:105:35 | 53 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:105:34:105:35 | 53 | params_flow.rb:1:11:1:11 | x | @@ -5928,7 +5166,6 @@ trackEnd | params_flow.rb:105:34:105:35 | 53 | params_flow.rb:105:28:105:36 | call to taint | | params_flow.rb:105:34:105:35 | 53 | params_flow.rb:105:34:105:35 | 53 | | params_flow.rb:105:39:105:47 | call to taint | params_flow.rb:105:39:105:47 | call to taint | -| params_flow.rb:105:39:105:47 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:105:39:105:47 | synthetic splat argument | params_flow.rb:105:39:105:47 | synthetic splat argument | | params_flow.rb:105:45:105:46 | 54 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:105:45:105:46 | 54 | params_flow.rb:1:11:1:11 | x | @@ -5945,7 +5182,6 @@ trackEnd | params_flow.rb:106:15:106:23 | call to taint | params_flow.rb:98:19:98:19 | a | | params_flow.rb:106:15:106:23 | call to taint | params_flow.rb:99:10:99:10 | a | | params_flow.rb:106:15:106:23 | call to taint | params_flow.rb:106:15:106:23 | call to taint | -| params_flow.rb:106:15:106:23 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:106:15:106:23 | synthetic splat argument | params_flow.rb:106:15:106:23 | synthetic splat argument | | params_flow.rb:106:21:106:22 | 55 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:106:21:106:22 | 55 | params_flow.rb:1:11:1:11 | x | @@ -5959,31 +5195,17 @@ trackEnd | params_flow.rb:106:21:106:22 | 55 | params_flow.rb:106:15:106:23 | call to taint | | params_flow.rb:106:21:106:22 | 55 | params_flow.rb:106:21:106:22 | 55 | | params_flow.rb:106:26:106:34 | call to taint | params_flow.rb:106:26:106:34 | call to taint | -| params_flow.rb:106:26:106:34 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:106:26:106:34 | synthetic splat argument | params_flow.rb:106:26:106:34 | synthetic splat argument | | params_flow.rb:106:32:106:33 | 56 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:106:32:106:33 | 56 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:106:32:106:33 | 56 | params_flow.rb:2:5:2:5 | x | | params_flow.rb:106:32:106:33 | 56 | params_flow.rb:106:26:106:34 | call to taint | | params_flow.rb:106:32:106:33 | 56 | params_flow.rb:106:32:106:33 | 56 | -| params_flow.rb:106:37:106:45 | call to taint | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:106:37:106:45 | call to taint | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:106:37:106:45 | call to taint | params_flow.rb:6:10:6:10 | x | -| params_flow.rb:106:37:106:45 | call to taint | params_flow.rb:98:31:98:31 | b | -| params_flow.rb:106:37:106:45 | call to taint | params_flow.rb:98:31:98:31 | b | -| params_flow.rb:106:37:106:45 | call to taint | params_flow.rb:102:10:102:10 | b | | params_flow.rb:106:37:106:45 | call to taint | params_flow.rb:106:37:106:45 | call to taint | -| params_flow.rb:106:37:106:45 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:106:37:106:45 | synthetic splat argument | params_flow.rb:106:37:106:45 | synthetic splat argument | | params_flow.rb:106:43:106:44 | 57 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:106:43:106:44 | 57 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:106:43:106:44 | 57 | params_flow.rb:2:5:2:5 | x | -| params_flow.rb:106:43:106:44 | 57 | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:106:43:106:44 | 57 | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:106:43:106:44 | 57 | params_flow.rb:6:10:6:10 | x | -| params_flow.rb:106:43:106:44 | 57 | params_flow.rb:98:31:98:31 | b | -| params_flow.rb:106:43:106:44 | 57 | params_flow.rb:98:31:98:31 | b | -| params_flow.rb:106:43:106:44 | 57 | params_flow.rb:102:10:102:10 | b | | params_flow.rb:106:43:106:44 | 57 | params_flow.rb:106:37:106:45 | call to taint | | params_flow.rb:106:43:106:44 | 57 | params_flow.rb:106:43:106:44 | 57 | | params_flow.rb:108:1:112:3 | &block | params_flow.rb:108:1:112:3 | &block | @@ -6017,10 +5239,8 @@ trackEnd | params_flow.rb:108:44:108:44 | c | params_flow.rb:108:44:108:44 | c | | params_flow.rb:108:44:108:44 | c | params_flow.rb:111:10:111:10 | c | | params_flow.rb:109:5:109:10 | call to sink | params_flow.rb:109:5:109:10 | call to sink | -| params_flow.rb:109:5:109:10 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:109:5:109:10 | synthetic splat argument | params_flow.rb:109:5:109:10 | synthetic splat argument | | params_flow.rb:110:5:110:13 | call to sink | params_flow.rb:110:5:110:13 | call to sink | -| params_flow.rb:110:5:110:13 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:110:5:110:13 | synthetic splat argument | params_flow.rb:110:5:110:13 | synthetic splat argument | | params_flow.rb:110:10:110:13 | ...[...] | params_flow.rb:5:10:5:10 | x | | params_flow.rb:110:10:110:13 | ...[...] | params_flow.rb:5:10:5:10 | x | @@ -6030,10 +5250,8 @@ trackEnd | params_flow.rb:110:12:110:12 | 0 | params_flow.rb:110:12:110:12 | 0 | | params_flow.rb:111:5:111:10 | call to sink | params_flow.rb:111:5:111:10 | call to sink | | params_flow.rb:111:5:111:10 | call to sink | params_flow.rb:114:1:114:67 | call to splat_followed_by_keyword_param | -| params_flow.rb:111:5:111:10 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:111:5:111:10 | synthetic splat argument | params_flow.rb:111:5:111:10 | synthetic splat argument | | params_flow.rb:114:1:114:67 | call to splat_followed_by_keyword_param | params_flow.rb:114:1:114:67 | call to splat_followed_by_keyword_param | -| params_flow.rb:114:1:114:67 | synthetic hash-splat argument | params_flow.rb:108:1:112:3 | synthetic hash-splat parameter | | params_flow.rb:114:1:114:67 | synthetic hash-splat argument | params_flow.rb:114:1:114:67 | synthetic hash-splat argument | | params_flow.rb:114:1:114:67 | synthetic splat argument | params_flow.rb:108:1:112:3 | synthetic splat parameter | | params_flow.rb:114:1:114:67 | synthetic splat argument | params_flow.rb:114:1:114:67 | synthetic splat argument | @@ -6044,7 +5262,6 @@ trackEnd | params_flow.rb:114:33:114:41 | call to taint | params_flow.rb:108:37:108:37 | a | | params_flow.rb:114:33:114:41 | call to taint | params_flow.rb:109:10:109:10 | a | | params_flow.rb:114:33:114:41 | call to taint | params_flow.rb:114:33:114:41 | call to taint | -| params_flow.rb:114:33:114:41 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:114:33:114:41 | synthetic splat argument | params_flow.rb:114:33:114:41 | synthetic splat argument | | params_flow.rb:114:39:114:40 | 58 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:114:39:114:40 | 58 | params_flow.rb:1:11:1:11 | x | @@ -6062,7 +5279,6 @@ trackEnd | params_flow.rb:114:44:114:52 | call to taint | params_flow.rb:6:10:6:10 | x | | params_flow.rb:114:44:114:52 | call to taint | params_flow.rb:110:10:110:13 | ...[...] | | params_flow.rb:114:44:114:52 | call to taint | params_flow.rb:114:44:114:52 | call to taint | -| params_flow.rb:114:44:114:52 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:114:44:114:52 | synthetic splat argument | params_flow.rb:114:44:114:52 | synthetic splat argument | | params_flow.rb:114:50:114:51 | 59 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:114:50:114:51 | 59 | params_flow.rb:1:11:1:11 | x | @@ -6082,7 +5298,6 @@ trackEnd | params_flow.rb:114:58:114:66 | call to taint | params_flow.rb:108:44:108:44 | c | | params_flow.rb:114:58:114:66 | call to taint | params_flow.rb:111:10:111:10 | c | | params_flow.rb:114:58:114:66 | call to taint | params_flow.rb:114:58:114:66 | call to taint | -| params_flow.rb:114:58:114:66 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:114:58:114:66 | synthetic splat argument | params_flow.rb:114:58:114:66 | synthetic splat argument | | params_flow.rb:114:64:114:65 | 60 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:114:64:114:65 | 60 | params_flow.rb:1:11:1:11 | x | @@ -6134,7 +5349,6 @@ trackEnd | params_flow.rb:117:19:117:27 | call to taint | params_flow.rb:117:19:117:27 | ... = ... | | params_flow.rb:117:19:117:27 | call to taint | params_flow.rb:117:19:117:27 | __synth__0 | | params_flow.rb:117:19:117:27 | call to taint | params_flow.rb:117:19:117:27 | call to taint | -| params_flow.rb:117:19:117:27 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:117:19:117:27 | synthetic splat argument | params_flow.rb:117:19:117:27 | synthetic splat argument | | params_flow.rb:117:25:117:26 | 61 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:117:25:117:26 | 61 | params_flow.rb:1:11:1:11 | x | @@ -6200,20 +5414,15 @@ trackEnd | params_flow.rb:120:27:120:27 | e | params_flow.rb:120:27:120:27 | e | | params_flow.rb:120:27:120:27 | e | params_flow.rb:125:10:125:10 | e | | params_flow.rb:121:5:121:10 | call to sink | params_flow.rb:121:5:121:10 | call to sink | -| params_flow.rb:121:5:121:10 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:121:5:121:10 | synthetic splat argument | params_flow.rb:121:5:121:10 | synthetic splat argument | | params_flow.rb:122:5:122:10 | call to sink | params_flow.rb:122:5:122:10 | call to sink | -| params_flow.rb:122:5:122:10 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:122:5:122:10 | synthetic splat argument | params_flow.rb:122:5:122:10 | synthetic splat argument | | params_flow.rb:123:5:123:10 | call to sink | params_flow.rb:123:5:123:10 | call to sink | -| params_flow.rb:123:5:123:10 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:123:5:123:10 | synthetic splat argument | params_flow.rb:123:5:123:10 | synthetic splat argument | | params_flow.rb:124:5:124:10 | call to sink | params_flow.rb:124:5:124:10 | call to sink | -| params_flow.rb:124:5:124:10 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:124:5:124:10 | synthetic splat argument | params_flow.rb:124:5:124:10 | synthetic splat argument | | params_flow.rb:125:5:125:10 | call to sink | params_flow.rb:125:5:125:10 | call to sink | | params_flow.rb:125:5:125:10 | call to sink | params_flow.rb:128:1:128:61 | call to destruct | -| params_flow.rb:125:5:125:10 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:125:5:125:10 | synthetic splat argument | params_flow.rb:125:5:125:10 | synthetic splat argument | | params_flow.rb:128:1:128:61 | call to destruct | params_flow.rb:128:1:128:61 | call to destruct | | params_flow.rb:128:1:128:61 | synthetic splat argument | params_flow.rb:128:1:128:61 | synthetic splat argument | @@ -6222,7 +5431,6 @@ trackEnd | params_flow.rb:128:10:128:31 | synthetic splat argument | params_flow.rb:128:10:128:31 | call to [] | | params_flow.rb:128:10:128:31 | synthetic splat argument | params_flow.rb:128:10:128:31 | synthetic splat argument | | params_flow.rb:128:11:128:19 | call to taint | params_flow.rb:128:11:128:19 | call to taint | -| params_flow.rb:128:11:128:19 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:128:11:128:19 | synthetic splat argument | params_flow.rb:128:11:128:19 | synthetic splat argument | | params_flow.rb:128:17:128:18 | 62 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:128:17:128:18 | 62 | params_flow.rb:1:11:1:11 | x | @@ -6230,7 +5438,6 @@ trackEnd | params_flow.rb:128:17:128:18 | 62 | params_flow.rb:128:11:128:19 | call to taint | | params_flow.rb:128:17:128:18 | 62 | params_flow.rb:128:17:128:18 | 62 | | params_flow.rb:128:22:128:30 | call to taint | params_flow.rb:128:22:128:30 | call to taint | -| params_flow.rb:128:22:128:30 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:128:22:128:30 | synthetic splat argument | params_flow.rb:128:22:128:30 | synthetic splat argument | | params_flow.rb:128:28:128:29 | 63 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:128:28:128:29 | 63 | params_flow.rb:1:11:1:11 | x | @@ -6242,7 +5449,6 @@ trackEnd | params_flow.rb:128:34:128:60 | synthetic splat argument | params_flow.rb:128:34:128:60 | call to [] | | params_flow.rb:128:34:128:60 | synthetic splat argument | params_flow.rb:128:34:128:60 | synthetic splat argument | | params_flow.rb:128:35:128:43 | call to taint | params_flow.rb:128:35:128:43 | call to taint | -| params_flow.rb:128:35:128:43 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:128:35:128:43 | synthetic splat argument | params_flow.rb:128:35:128:43 | synthetic splat argument | | params_flow.rb:128:41:128:42 | 64 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:128:41:128:42 | 64 | params_flow.rb:1:11:1:11 | x | @@ -6255,7 +5461,6 @@ trackEnd | params_flow.rb:128:46:128:59 | synthetic splat argument | params_flow.rb:128:46:128:59 | synthetic splat argument | | params_flow.rb:128:47:128:47 | 0 | params_flow.rb:128:47:128:47 | 0 | | params_flow.rb:128:50:128:58 | call to taint | params_flow.rb:128:50:128:58 | call to taint | -| params_flow.rb:128:50:128:58 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:128:50:128:58 | synthetic splat argument | params_flow.rb:128:50:128:58 | synthetic splat argument | | params_flow.rb:128:56:128:57 | 65 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:128:56:128:57 | 65 | params_flow.rb:1:11:1:11 | x | @@ -6292,7 +5497,6 @@ trackEnd | params_flow.rb:130:9:130:17 | call to taint | params_flow.rb:83:14:83:14 | t | | params_flow.rb:130:9:130:17 | call to taint | params_flow.rb:84:10:84:10 | t | | params_flow.rb:130:9:130:17 | call to taint | params_flow.rb:130:9:130:17 | call to taint | -| params_flow.rb:130:9:130:17 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:130:9:130:17 | synthetic splat argument | params_flow.rb:130:9:130:17 | synthetic splat argument | | params_flow.rb:130:15:130:16 | 66 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:130:15:130:16 | 66 | params_flow.rb:1:11:1:11 | x | @@ -6312,7 +5516,6 @@ trackEnd | params_flow.rb:130:20:130:28 | call to taint | params_flow.rb:83:17:83:17 | u | | params_flow.rb:130:20:130:28 | call to taint | params_flow.rb:85:10:85:10 | u | | params_flow.rb:130:20:130:28 | call to taint | params_flow.rb:130:20:130:28 | call to taint | -| params_flow.rb:130:20:130:28 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:130:20:130:28 | synthetic splat argument | params_flow.rb:130:20:130:28 | synthetic splat argument | | params_flow.rb:130:26:130:27 | 67 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:130:26:130:27 | 67 | params_flow.rb:1:11:1:11 | x | @@ -6328,53 +5531,16 @@ trackEnd | params_flow.rb:131:1:131:46 | call to pos_many | params_flow.rb:131:1:131:46 | call to pos_many | | params_flow.rb:131:10:131:14 | * ... | params_flow.rb:83:1:91:3 | synthetic splat parameter | | params_flow.rb:131:10:131:14 | * ... | params_flow.rb:131:10:131:14 | * ... | -| params_flow.rb:131:17:131:25 | call to taint | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:131:17:131:25 | call to taint | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:131:17:131:25 | call to taint | params_flow.rb:6:10:6:10 | x | -| params_flow.rb:131:17:131:25 | call to taint | params_flow.rb:83:17:83:17 | u | -| params_flow.rb:131:17:131:25 | call to taint | params_flow.rb:83:17:83:17 | u | -| params_flow.rb:131:17:131:25 | call to taint | params_flow.rb:85:10:85:10 | u | | params_flow.rb:131:17:131:25 | call to taint | params_flow.rb:131:17:131:25 | call to taint | -| params_flow.rb:131:17:131:25 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:131:17:131:25 | synthetic splat argument | params_flow.rb:131:17:131:25 | synthetic splat argument | | params_flow.rb:131:23:131:24 | 68 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:131:23:131:24 | 68 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:131:23:131:24 | 68 | params_flow.rb:2:5:2:5 | x | -| params_flow.rb:131:23:131:24 | 68 | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:131:23:131:24 | 68 | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:131:23:131:24 | 68 | params_flow.rb:6:10:6:10 | x | -| params_flow.rb:131:23:131:24 | 68 | params_flow.rb:83:17:83:17 | u | -| params_flow.rb:131:23:131:24 | 68 | params_flow.rb:83:17:83:17 | u | -| params_flow.rb:131:23:131:24 | 68 | params_flow.rb:85:10:85:10 | u | | params_flow.rb:131:23:131:24 | 68 | params_flow.rb:131:17:131:25 | call to taint | | params_flow.rb:131:23:131:24 | 68 | params_flow.rb:131:23:131:24 | 68 | -| params_flow.rb:131:28:131:30 | nil | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:131:28:131:30 | nil | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:131:28:131:30 | nil | params_flow.rb:6:10:6:10 | x | -| params_flow.rb:131:28:131:30 | nil | params_flow.rb:83:20:83:20 | v | -| params_flow.rb:131:28:131:30 | nil | params_flow.rb:83:20:83:20 | v | -| params_flow.rb:131:28:131:30 | nil | params_flow.rb:86:10:86:10 | v | | params_flow.rb:131:28:131:30 | nil | params_flow.rb:131:28:131:30 | nil | -| params_flow.rb:131:33:131:35 | nil | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:131:33:131:35 | nil | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:131:33:131:35 | nil | params_flow.rb:6:10:6:10 | x | -| params_flow.rb:131:33:131:35 | nil | params_flow.rb:83:23:83:23 | w | -| params_flow.rb:131:33:131:35 | nil | params_flow.rb:83:23:83:23 | w | -| params_flow.rb:131:33:131:35 | nil | params_flow.rb:87:10:87:10 | w | | params_flow.rb:131:33:131:35 | nil | params_flow.rb:131:33:131:35 | nil | -| params_flow.rb:131:38:131:40 | nil | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:131:38:131:40 | nil | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:131:38:131:40 | nil | params_flow.rb:6:10:6:10 | x | -| params_flow.rb:131:38:131:40 | nil | params_flow.rb:83:26:83:26 | x | -| params_flow.rb:131:38:131:40 | nil | params_flow.rb:83:26:83:26 | x | -| params_flow.rb:131:38:131:40 | nil | params_flow.rb:88:10:88:10 | x | | params_flow.rb:131:38:131:40 | nil | params_flow.rb:131:38:131:40 | nil | -| params_flow.rb:131:43:131:45 | nil | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:131:43:131:45 | nil | params_flow.rb:5:10:5:10 | x | -| params_flow.rb:131:43:131:45 | nil | params_flow.rb:6:10:6:10 | x | -| params_flow.rb:131:43:131:45 | nil | params_flow.rb:83:29:83:29 | y | -| params_flow.rb:131:43:131:45 | nil | params_flow.rb:83:29:83:29 | y | -| params_flow.rb:131:43:131:45 | nil | params_flow.rb:89:10:89:10 | y | | params_flow.rb:131:43:131:45 | nil | params_flow.rb:131:43:131:45 | nil | | params_flow.rb:133:1:135:3 | &block | params_flow.rb:133:1:135:3 | &block | | params_flow.rb:133:1:135:3 | self in splatall | params_flow.rb:5:1:7:3 | self (sink) | @@ -6390,7 +5556,6 @@ trackEnd | params_flow.rb:133:15:133:18 | args | params_flow.rb:133:15:133:18 | args | | params_flow.rb:134:5:134:16 | call to sink | params_flow.rb:134:5:134:16 | call to sink | | params_flow.rb:134:5:134:16 | call to sink | params_flow.rb:137:1:137:44 | call to splatall | -| params_flow.rb:134:5:134:16 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:134:5:134:16 | synthetic splat argument | params_flow.rb:134:5:134:16 | synthetic splat argument | | params_flow.rb:134:10:134:16 | ...[...] | params_flow.rb:5:10:5:10 | x | | params_flow.rb:134:10:134:16 | ...[...] | params_flow.rb:5:10:5:10 | x | @@ -6408,7 +5573,6 @@ trackEnd | params_flow.rb:137:11:137:43 | synthetic splat argument | params_flow.rb:137:11:137:43 | call to [] | | params_flow.rb:137:11:137:43 | synthetic splat argument | params_flow.rb:137:11:137:43 | synthetic splat argument | | params_flow.rb:137:12:137:20 | call to taint | params_flow.rb:137:12:137:20 | call to taint | -| params_flow.rb:137:12:137:20 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:137:12:137:20 | synthetic splat argument | params_flow.rb:137:12:137:20 | synthetic splat argument | | params_flow.rb:137:18:137:19 | 69 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:137:18:137:19 | 69 | params_flow.rb:1:11:1:11 | x | @@ -6420,7 +5584,6 @@ trackEnd | params_flow.rb:137:23:137:31 | call to taint | params_flow.rb:6:10:6:10 | x | | params_flow.rb:137:23:137:31 | call to taint | params_flow.rb:134:10:134:16 | ...[...] | | params_flow.rb:137:23:137:31 | call to taint | params_flow.rb:137:23:137:31 | call to taint | -| params_flow.rb:137:23:137:31 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:137:23:137:31 | synthetic splat argument | params_flow.rb:137:23:137:31 | synthetic splat argument | | params_flow.rb:137:29:137:30 | 70 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:137:29:137:30 | 70 | params_flow.rb:1:11:1:11 | x | @@ -6432,7 +5595,6 @@ trackEnd | params_flow.rb:137:29:137:30 | 70 | params_flow.rb:137:23:137:31 | call to taint | | params_flow.rb:137:29:137:30 | 70 | params_flow.rb:137:29:137:30 | 70 | | params_flow.rb:137:34:137:42 | call to taint | params_flow.rb:137:34:137:42 | call to taint | -| params_flow.rb:137:34:137:42 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:137:34:137:42 | synthetic splat argument | params_flow.rb:137:34:137:42 | synthetic splat argument | | params_flow.rb:137:40:137:41 | 71 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:137:40:137:41 | 71 | params_flow.rb:1:11:1:11 | x | @@ -6485,7 +5647,6 @@ trackEnd | params_flow.rb:143:20:143:32 | Pair | params_flow.rb:143:20:143:32 | Pair | | params_flow.rb:143:24:143:32 | call to taint | params_flow.rb:140:27:140:37 | ...[...] | | params_flow.rb:143:24:143:32 | call to taint | params_flow.rb:143:24:143:32 | call to taint | -| params_flow.rb:143:24:143:32 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:143:24:143:32 | synthetic splat argument | params_flow.rb:143:24:143:32 | synthetic splat argument | | params_flow.rb:143:30:143:31 | 72 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:143:30:143:31 | 72 | params_flow.rb:1:11:1:11 | x | @@ -6494,7 +5655,6 @@ trackEnd | params_flow.rb:143:30:143:31 | 72 | params_flow.rb:143:24:143:32 | call to taint | | params_flow.rb:143:30:143:31 | 72 | params_flow.rb:143:30:143:31 | 72 | | params_flow.rb:144:1:144:20 | call to sink | params_flow.rb:144:1:144:20 | call to sink | -| params_flow.rb:144:1:144:20 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:144:1:144:20 | synthetic splat argument | params_flow.rb:144:1:144:20 | synthetic splat argument | | params_flow.rb:144:6:144:16 | ...[...] | params_flow.rb:144:6:144:16 | ...[...] | | params_flow.rb:144:6:144:16 | synthetic splat argument | params_flow.rb:144:6:144:16 | synthetic splat argument | @@ -6512,7 +5672,6 @@ trackEnd | params_flow.rb:145:21:145:28 | ** ... | params_flow.rb:140:27:140:32 | kwargs | | params_flow.rb:145:21:145:28 | ** ... | params_flow.rb:145:21:145:28 | ** ... | | params_flow.rb:146:1:146:20 | call to sink | params_flow.rb:146:1:146:20 | call to sink | -| params_flow.rb:146:1:146:20 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:146:1:146:20 | synthetic splat argument | params_flow.rb:146:1:146:20 | synthetic splat argument | | params_flow.rb:146:6:146:16 | ...[...] | params_flow.rb:146:6:146:16 | ...[...] | | params_flow.rb:146:6:146:16 | synthetic splat argument | params_flow.rb:146:6:146:16 | synthetic splat argument | @@ -6533,7 +5692,6 @@ trackEnd | params_flow.rb:148:6:148:7 | call to [] | params_flow.rb:150:25:150:26 | p1 | | params_flow.rb:148:6:148:7 | call to [] | params_flow.rb:151:6:151:7 | p1 | | params_flow.rb:149:1:149:11 | call to sink | params_flow.rb:149:1:149:11 | call to sink | -| params_flow.rb:149:1:149:11 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:149:1:149:11 | synthetic splat argument | params_flow.rb:149:1:149:11 | synthetic splat argument | | params_flow.rb:149:6:149:10 | ...[...] | params_flow.rb:5:10:5:10 | x | | params_flow.rb:149:6:149:10 | ...[...] | params_flow.rb:5:10:5:10 | x | @@ -6553,7 +5711,6 @@ trackEnd | params_flow.rb:150:29:150:41 | Pair | params_flow.rb:150:29:150:41 | Pair | | params_flow.rb:150:33:150:41 | call to taint | params_flow.rb:140:27:140:37 | ...[...] | | params_flow.rb:150:33:150:41 | call to taint | params_flow.rb:150:33:150:41 | call to taint | -| params_flow.rb:150:33:150:41 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:150:33:150:41 | synthetic splat argument | params_flow.rb:150:33:150:41 | synthetic splat argument | | params_flow.rb:150:39:150:40 | 73 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:150:39:150:40 | 73 | params_flow.rb:1:11:1:11 | x | @@ -6562,7 +5719,6 @@ trackEnd | params_flow.rb:150:39:150:40 | 73 | params_flow.rb:150:33:150:41 | call to taint | | params_flow.rb:150:39:150:40 | 73 | params_flow.rb:150:39:150:40 | 73 | | params_flow.rb:151:1:151:11 | call to sink | params_flow.rb:151:1:151:11 | call to sink | -| params_flow.rb:151:1:151:11 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:151:1:151:11 | synthetic splat argument | params_flow.rb:151:1:151:11 | synthetic splat argument | | params_flow.rb:151:6:151:10 | ...[...] | params_flow.rb:5:10:5:10 | x | | params_flow.rb:151:6:151:10 | ...[...] | params_flow.rb:5:10:5:10 | x | @@ -6618,7 +5774,6 @@ trackEnd | params_flow.rb:157:24:157:32 | call to taint | params_flow.rb:153:28:153:29 | p2 | | params_flow.rb:157:24:157:32 | call to taint | params_flow.rb:154:18:154:19 | p2 | | params_flow.rb:157:24:157:32 | call to taint | params_flow.rb:157:24:157:32 | call to taint | -| params_flow.rb:157:24:157:32 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:157:24:157:32 | synthetic splat argument | params_flow.rb:157:24:157:32 | synthetic splat argument | | params_flow.rb:157:30:157:31 | 74 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:157:30:157:31 | 74 | params_flow.rb:1:11:1:11 | x | @@ -6629,7 +5784,6 @@ trackEnd | params_flow.rb:157:30:157:31 | 74 | params_flow.rb:157:24:157:32 | call to taint | | params_flow.rb:157:30:157:31 | 74 | params_flow.rb:157:30:157:31 | 74 | | params_flow.rb:158:1:158:20 | call to sink | params_flow.rb:158:1:158:20 | call to sink | -| params_flow.rb:158:1:158:20 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:158:1:158:20 | synthetic splat argument | params_flow.rb:158:1:158:20 | synthetic splat argument | | params_flow.rb:158:6:158:16 | ...[...] | params_flow.rb:158:6:158:16 | ...[...] | | params_flow.rb:158:6:158:16 | synthetic splat argument | params_flow.rb:158:6:158:16 | synthetic splat argument | @@ -6644,7 +5798,6 @@ trackEnd | params_flow.rb:159:19:159:26 | ** ... | params_flow.rb:153:1:155:3 | synthetic hash-splat parameter | | params_flow.rb:159:19:159:26 | ** ... | params_flow.rb:159:19:159:26 | ** ... | | params_flow.rb:160:1:160:20 | call to sink | params_flow.rb:160:1:160:20 | call to sink | -| params_flow.rb:160:1:160:20 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:160:1:160:20 | synthetic splat argument | params_flow.rb:160:1:160:20 | synthetic splat argument | | params_flow.rb:160:6:160:16 | ...[...] | params_flow.rb:160:6:160:16 | ...[...] | | params_flow.rb:160:6:160:16 | synthetic splat argument | params_flow.rb:160:6:160:16 | synthetic splat argument | @@ -6667,7 +5820,6 @@ trackEnd | params_flow.rb:162:6:162:7 | call to [] | params_flow.rb:164:23:164:24 | p1 | | params_flow.rb:162:6:162:7 | call to [] | params_flow.rb:165:6:165:7 | p1 | | params_flow.rb:163:1:163:11 | call to sink | params_flow.rb:163:1:163:11 | call to sink | -| params_flow.rb:163:1:163:11 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:163:1:163:11 | synthetic splat argument | params_flow.rb:163:1:163:11 | synthetic splat argument | | params_flow.rb:163:6:163:10 | ...[...] | params_flow.rb:5:10:5:10 | x | | params_flow.rb:163:6:163:10 | ...[...] | params_flow.rb:5:10:5:10 | x | @@ -6676,7 +5828,6 @@ trackEnd | params_flow.rb:163:6:163:10 | synthetic splat argument | params_flow.rb:163:6:163:10 | synthetic splat argument | | params_flow.rb:163:9:163:9 | 0 | params_flow.rb:163:9:163:9 | 0 | | params_flow.rb:164:1:164:40 | call to keywordSideEffect | params_flow.rb:164:1:164:40 | call to keywordSideEffect | -| params_flow.rb:164:1:164:40 | synthetic hash-splat argument | params_flow.rb:153:1:155:3 | synthetic hash-splat parameter | | params_flow.rb:164:1:164:40 | synthetic hash-splat argument | params_flow.rb:164:1:164:40 | synthetic hash-splat argument | | params_flow.rb:164:19:164:20 | :p1 | params_flow.rb:164:19:164:20 | :p1 | | params_flow.rb:164:19:164:24 | Pair | params_flow.rb:164:19:164:24 | Pair | @@ -6686,7 +5837,6 @@ trackEnd | params_flow.rb:164:31:164:39 | call to taint | params_flow.rb:153:28:153:29 | p2 | | params_flow.rb:164:31:164:39 | call to taint | params_flow.rb:154:18:154:19 | p2 | | params_flow.rb:164:31:164:39 | call to taint | params_flow.rb:164:31:164:39 | call to taint | -| params_flow.rb:164:31:164:39 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:164:31:164:39 | synthetic splat argument | params_flow.rb:164:31:164:39 | synthetic splat argument | | params_flow.rb:164:37:164:38 | 75 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:164:37:164:38 | 75 | params_flow.rb:1:11:1:11 | x | @@ -6697,7 +5847,6 @@ trackEnd | params_flow.rb:164:37:164:38 | 75 | params_flow.rb:164:31:164:39 | call to taint | | params_flow.rb:164:37:164:38 | 75 | params_flow.rb:164:37:164:38 | 75 | | params_flow.rb:165:1:165:11 | call to sink | params_flow.rb:165:1:165:11 | call to sink | -| params_flow.rb:165:1:165:11 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:165:1:165:11 | synthetic splat argument | params_flow.rb:165:1:165:11 | synthetic splat argument | | params_flow.rb:165:6:165:10 | ...[...] | params_flow.rb:5:10:5:10 | x | | params_flow.rb:165:6:165:10 | ...[...] | params_flow.rb:5:10:5:10 | x | @@ -6749,7 +5898,6 @@ trackEnd | params_flow.rb:171:13:171:14 | call to [] | params_flow.rb:174:6:174:15 | ...[...] | | params_flow.rb:171:17:171:25 | call to taint | params_flow.rb:168:26:168:35 | ...[...] | | params_flow.rb:171:17:171:25 | call to taint | params_flow.rb:171:17:171:25 | call to taint | -| params_flow.rb:171:17:171:25 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:171:17:171:25 | synthetic splat argument | params_flow.rb:171:17:171:25 | synthetic splat argument | | params_flow.rb:171:23:171:24 | 76 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:171:23:171:24 | 76 | params_flow.rb:1:11:1:11 | x | @@ -6758,7 +5906,6 @@ trackEnd | params_flow.rb:171:23:171:24 | 76 | params_flow.rb:171:17:171:25 | call to taint | | params_flow.rb:171:23:171:24 | 76 | params_flow.rb:171:23:171:24 | 76 | | params_flow.rb:172:1:172:19 | call to sink | params_flow.rb:172:1:172:19 | call to sink | -| params_flow.rb:172:1:172:19 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:172:1:172:19 | synthetic splat argument | params_flow.rb:172:1:172:19 | synthetic splat argument | | params_flow.rb:172:6:172:15 | ...[...] | params_flow.rb:172:6:172:15 | ...[...] | | params_flow.rb:172:6:172:15 | synthetic splat argument | params_flow.rb:172:6:172:15 | synthetic splat argument | @@ -6776,7 +5923,6 @@ trackEnd | params_flow.rb:173:17:173:24 | * ... | params_flow.rb:168:26:168:32 | posargs | | params_flow.rb:173:17:173:24 | * ... | params_flow.rb:173:17:173:24 | * ... | | params_flow.rb:174:1:174:19 | call to sink | params_flow.rb:174:1:174:19 | call to sink | -| params_flow.rb:174:1:174:19 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:174:1:174:19 | synthetic splat argument | params_flow.rb:174:1:174:19 | synthetic splat argument | | params_flow.rb:174:6:174:15 | ...[...] | params_flow.rb:174:6:174:15 | ...[...] | | params_flow.rb:174:6:174:15 | synthetic splat argument | params_flow.rb:174:6:174:15 | synthetic splat argument | @@ -6797,7 +5943,6 @@ trackEnd | params_flow.rb:176:6:176:7 | call to [] | params_flow.rb:178:17:178:18 | p1 | | params_flow.rb:176:6:176:7 | call to [] | params_flow.rb:179:6:179:7 | p1 | | params_flow.rb:177:1:177:11 | call to sink | params_flow.rb:177:1:177:11 | call to sink | -| params_flow.rb:177:1:177:11 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:177:1:177:11 | synthetic splat argument | params_flow.rb:177:1:177:11 | synthetic splat argument | | params_flow.rb:177:6:177:10 | ...[...] | params_flow.rb:5:10:5:10 | x | | params_flow.rb:177:6:177:10 | ...[...] | params_flow.rb:5:10:5:10 | x | @@ -6813,7 +5958,6 @@ trackEnd | params_flow.rb:178:1:178:30 | synthetic splat argument | params_flow.rb:178:1:178:30 | synthetic splat argument | | params_flow.rb:178:21:178:29 | call to taint | params_flow.rb:168:26:168:35 | ...[...] | | params_flow.rb:178:21:178:29 | call to taint | params_flow.rb:178:21:178:29 | call to taint | -| params_flow.rb:178:21:178:29 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:178:21:178:29 | synthetic splat argument | params_flow.rb:178:21:178:29 | synthetic splat argument | | params_flow.rb:178:27:178:28 | 77 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:178:27:178:28 | 77 | params_flow.rb:1:11:1:11 | x | @@ -6822,7 +5966,6 @@ trackEnd | params_flow.rb:178:27:178:28 | 77 | params_flow.rb:178:21:178:29 | call to taint | | params_flow.rb:178:27:178:28 | 77 | params_flow.rb:178:27:178:28 | 77 | | params_flow.rb:179:1:179:11 | call to sink | params_flow.rb:179:1:179:11 | call to sink | -| params_flow.rb:179:1:179:11 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:179:1:179:11 | synthetic splat argument | params_flow.rb:179:1:179:11 | synthetic splat argument | | params_flow.rb:179:6:179:10 | ...[...] | params_flow.rb:5:10:5:10 | x | | params_flow.rb:179:6:179:10 | ...[...] | params_flow.rb:5:10:5:10 | x | @@ -6880,7 +6023,6 @@ trackEnd | params_flow.rb:185:14:185:22 | call to taint | params_flow.rb:181:28:181:29 | p2 | | params_flow.rb:185:14:185:22 | call to taint | params_flow.rb:182:18:182:19 | p2 | | params_flow.rb:185:14:185:22 | call to taint | params_flow.rb:185:14:185:22 | call to taint | -| params_flow.rb:185:14:185:22 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:185:14:185:22 | synthetic splat argument | params_flow.rb:185:14:185:22 | synthetic splat argument | | params_flow.rb:185:20:185:21 | 78 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:185:20:185:21 | 78 | params_flow.rb:1:11:1:11 | x | @@ -6891,7 +6033,6 @@ trackEnd | params_flow.rb:185:20:185:21 | 78 | params_flow.rb:185:14:185:22 | call to taint | | params_flow.rb:185:20:185:21 | 78 | params_flow.rb:185:20:185:21 | 78 | | params_flow.rb:186:1:186:16 | call to sink | params_flow.rb:186:1:186:16 | call to sink | -| params_flow.rb:186:1:186:16 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:186:1:186:16 | synthetic splat argument | params_flow.rb:186:1:186:16 | synthetic splat argument | | params_flow.rb:186:6:186:12 | ...[...] | params_flow.rb:186:6:186:12 | ...[...] | | params_flow.rb:186:6:186:12 | synthetic splat argument | params_flow.rb:186:6:186:12 | synthetic splat argument | @@ -6906,7 +6047,6 @@ trackEnd | params_flow.rb:187:20:187:24 | * ... | params_flow.rb:181:1:183:3 | synthetic splat parameter | | params_flow.rb:187:20:187:24 | * ... | params_flow.rb:187:20:187:24 | * ... | | params_flow.rb:188:1:188:16 | call to sink | params_flow.rb:188:1:188:16 | call to sink | -| params_flow.rb:188:1:188:16 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:188:1:188:16 | synthetic splat argument | params_flow.rb:188:1:188:16 | synthetic splat argument | | params_flow.rb:188:6:188:12 | ...[...] | params_flow.rb:188:6:188:12 | ...[...] | | params_flow.rb:188:6:188:12 | synthetic splat argument | params_flow.rb:188:6:188:12 | synthetic splat argument | @@ -6929,7 +6069,6 @@ trackEnd | params_flow.rb:190:6:190:7 | call to [] | params_flow.rb:192:20:192:21 | p1 | | params_flow.rb:190:6:190:7 | call to [] | params_flow.rb:193:6:193:7 | p1 | | params_flow.rb:191:1:191:11 | call to sink | params_flow.rb:191:1:191:11 | call to sink | -| params_flow.rb:191:1:191:11 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:191:1:191:11 | synthetic splat argument | params_flow.rb:191:1:191:11 | synthetic splat argument | | params_flow.rb:191:6:191:10 | ...[...] | params_flow.rb:5:10:5:10 | x | | params_flow.rb:191:6:191:10 | ...[...] | params_flow.rb:5:10:5:10 | x | @@ -6938,13 +6077,11 @@ trackEnd | params_flow.rb:191:6:191:10 | synthetic splat argument | params_flow.rb:191:6:191:10 | synthetic splat argument | | params_flow.rb:191:9:191:9 | 0 | params_flow.rb:191:9:191:9 | 0 | | params_flow.rb:192:1:192:33 | call to positionSideEffect | params_flow.rb:192:1:192:33 | call to positionSideEffect | -| params_flow.rb:192:1:192:33 | synthetic splat argument | params_flow.rb:181:1:183:3 | synthetic splat parameter | | params_flow.rb:192:1:192:33 | synthetic splat argument | params_flow.rb:192:1:192:33 | synthetic splat argument | | params_flow.rb:192:24:192:32 | call to taint | params_flow.rb:181:28:181:29 | p2 | | params_flow.rb:192:24:192:32 | call to taint | params_flow.rb:181:28:181:29 | p2 | | params_flow.rb:192:24:192:32 | call to taint | params_flow.rb:182:18:182:19 | p2 | | params_flow.rb:192:24:192:32 | call to taint | params_flow.rb:192:24:192:32 | call to taint | -| params_flow.rb:192:24:192:32 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:192:24:192:32 | synthetic splat argument | params_flow.rb:192:24:192:32 | synthetic splat argument | | params_flow.rb:192:30:192:31 | 79 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:192:30:192:31 | 79 | params_flow.rb:1:11:1:11 | x | @@ -6955,7 +6092,6 @@ trackEnd | params_flow.rb:192:30:192:31 | 79 | params_flow.rb:192:24:192:32 | call to taint | | params_flow.rb:192:30:192:31 | 79 | params_flow.rb:192:30:192:31 | 79 | | params_flow.rb:193:1:193:11 | call to sink | params_flow.rb:193:1:193:11 | call to sink | -| params_flow.rb:193:1:193:11 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:193:1:193:11 | synthetic splat argument | params_flow.rb:193:1:193:11 | synthetic splat argument | | params_flow.rb:193:6:193:10 | ...[...] | params_flow.rb:5:10:5:10 | x | | params_flow.rb:193:6:193:10 | ...[...] | params_flow.rb:5:10:5:10 | x | @@ -6990,7 +6126,6 @@ trackEnd | params_flow.rb:196:10:196:18 | call to taint | params_flow.rb:200:9:200:9 | x | | params_flow.rb:196:10:196:18 | call to taint | params_flow.rb:201:11:201:11 | x | | params_flow.rb:196:10:196:18 | call to taint | params_flow.rb:202:11:202:11 | x | -| params_flow.rb:196:10:196:18 | synthetic splat argument | params_flow.rb:1:1:3:3 | synthetic splat parameter | | params_flow.rb:196:10:196:18 | synthetic splat argument | params_flow.rb:196:10:196:18 | synthetic splat argument | | params_flow.rb:196:16:196:17 | 80 | params_flow.rb:1:11:1:11 | x | | params_flow.rb:196:16:196:17 | 80 | params_flow.rb:1:11:1:11 | x | @@ -7031,7 +6166,6 @@ trackEnd | params_flow.rb:200:12:200:12 | y | params_flow.rb:203:11:203:11 | y | | params_flow.rb:200:12:200:12 | y | params_flow.rb:204:11:204:11 | y | | params_flow.rb:201:5:201:15 | call to sink | params_flow.rb:201:5:201:15 | call to sink | -| params_flow.rb:201:5:201:15 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:201:5:201:15 | synthetic splat argument | params_flow.rb:201:5:201:15 | synthetic splat argument | | params_flow.rb:201:11:201:14 | ...[...] | params_flow.rb:5:10:5:10 | x | | params_flow.rb:201:11:201:14 | ...[...] | params_flow.rb:5:10:5:10 | x | @@ -7041,7 +6175,6 @@ trackEnd | params_flow.rb:201:11:201:14 | synthetic splat argument | params_flow.rb:201:11:201:14 | synthetic splat argument | | params_flow.rb:201:13:201:13 | 0 | params_flow.rb:201:13:201:13 | 0 | | params_flow.rb:202:5:202:15 | call to sink | params_flow.rb:202:5:202:15 | call to sink | -| params_flow.rb:202:5:202:15 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:202:5:202:15 | synthetic splat argument | params_flow.rb:202:5:202:15 | synthetic splat argument | | params_flow.rb:202:11:202:14 | ...[...] | params_flow.rb:5:10:5:10 | x | | params_flow.rb:202:11:202:14 | ...[...] | params_flow.rb:5:10:5:10 | x | @@ -7051,7 +6184,6 @@ trackEnd | params_flow.rb:202:11:202:14 | synthetic splat argument | params_flow.rb:202:11:202:14 | synthetic splat argument | | params_flow.rb:202:13:202:13 | 1 | params_flow.rb:202:13:202:13 | 1 | | params_flow.rb:203:5:203:15 | call to sink | params_flow.rb:203:5:203:15 | call to sink | -| params_flow.rb:203:5:203:15 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:203:5:203:15 | synthetic splat argument | params_flow.rb:203:5:203:15 | synthetic splat argument | | params_flow.rb:203:11:203:14 | ...[...] | params_flow.rb:5:10:5:10 | x | | params_flow.rb:203:11:203:14 | ...[...] | params_flow.rb:5:10:5:10 | x | @@ -7062,7 +6194,6 @@ trackEnd | params_flow.rb:203:13:203:13 | 0 | params_flow.rb:203:13:203:13 | 0 | | params_flow.rb:204:5:204:15 | call to sink | params_flow.rb:204:5:204:15 | call to sink | | params_flow.rb:204:5:204:15 | call to sink | params_flow.rb:207:1:207:14 | call to foo | -| params_flow.rb:204:5:204:15 | synthetic splat argument | params_flow.rb:5:1:7:3 | synthetic splat parameter | | params_flow.rb:204:5:204:15 | synthetic splat argument | params_flow.rb:204:5:204:15 | synthetic splat argument | | params_flow.rb:204:11:204:14 | ...[...] | params_flow.rb:5:10:5:10 | x | | params_flow.rb:204:11:204:14 | ...[...] | params_flow.rb:5:10:5:10 | x | diff --git a/ruby/ql/test/library-tests/dataflow/params/params-flow.expected b/ruby/ql/test/library-tests/dataflow/params/params-flow.expected index 74bbbd395b2..f665080a329 100644 --- a/ruby/ql/test/library-tests/dataflow/params/params-flow.expected +++ b/ruby/ql/test/library-tests/dataflow/params/params-flow.expected @@ -15,17 +15,13 @@ edges | params_flow.rb:25:12:25:13 | p1 | params_flow.rb:26:10:26:11 | p1 | provenance | | | params_flow.rb:25:17:25:24 | **kwargs [element :p2] | params_flow.rb:28:11:28:16 | kwargs [element :p2] | provenance | | | params_flow.rb:25:17:25:24 | **kwargs [element :p3] | params_flow.rb:29:11:29:16 | kwargs [element :p3] | provenance | | -| params_flow.rb:25:17:25:24 | **kwargs [hash-splat position :p2] | params_flow.rb:28:11:28:16 | kwargs [hash-splat position :p2] | provenance | | -| params_flow.rb:25:17:25:24 | **kwargs [hash-splat position :p3] | params_flow.rb:29:11:29:16 | kwargs [hash-splat position :p3] | provenance | | | params_flow.rb:28:11:28:16 | kwargs [element :p2] | params_flow.rb:28:11:28:21 | ...[...] | provenance | | -| params_flow.rb:28:11:28:16 | kwargs [hash-splat position :p2] | params_flow.rb:28:11:28:21 | ...[...] | provenance | | | params_flow.rb:28:11:28:21 | ...[...] | params_flow.rb:28:10:28:22 | ( ... ) | provenance | | | params_flow.rb:29:11:29:16 | kwargs [element :p3] | params_flow.rb:29:11:29:21 | ...[...] | provenance | | -| params_flow.rb:29:11:29:16 | kwargs [hash-splat position :p3] | params_flow.rb:29:11:29:21 | ...[...] | provenance | | | params_flow.rb:29:11:29:21 | ...[...] | params_flow.rb:29:10:29:22 | ( ... ) | provenance | | | params_flow.rb:33:12:33:19 | call to taint | params_flow.rb:25:12:25:13 | p1 | provenance | | -| params_flow.rb:33:26:33:34 | call to taint | params_flow.rb:25:17:25:24 | **kwargs [hash-splat position :p2] | provenance | | -| params_flow.rb:33:41:33:49 | call to taint | params_flow.rb:25:17:25:24 | **kwargs [hash-splat position :p3] | provenance | | +| params_flow.rb:33:26:33:34 | call to taint | params_flow.rb:25:17:25:24 | **kwargs [element :p2] | provenance | | +| params_flow.rb:33:41:33:49 | call to taint | params_flow.rb:25:17:25:24 | **kwargs [element :p3] | provenance | | | params_flow.rb:34:1:34:4 | args [element :p3] | params_flow.rb:35:25:35:28 | args [element :p3] | provenance | | | params_flow.rb:34:8:34:32 | call to [] [element :p3] | params_flow.rb:34:1:34:4 | args [element :p3] | provenance | | | params_flow.rb:34:14:34:22 | call to taint | params_flow.rb:34:8:34:32 | call to [] [element :p3] | provenance | | @@ -66,8 +62,6 @@ edges | params_flow.rb:47:13:47:16 | args [element 1] | params_flow.rb:47:12:47:16 | * ... [element 1] | provenance | | | params_flow.rb:49:13:49:14 | p1 | params_flow.rb:50:10:50:11 | p1 | provenance | | | params_flow.rb:49:17:49:24 | *posargs [element 0] | params_flow.rb:51:11:51:17 | posargs [element 0] | provenance | | -| params_flow.rb:49:17:49:24 | *posargs [element 0] | params_flow.rb:51:11:51:17 | posargs [element 0] | provenance | | -| params_flow.rb:51:11:51:17 | posargs [element 0] | params_flow.rb:51:11:51:20 | ...[...] | provenance | | | params_flow.rb:51:11:51:17 | posargs [element 0] | params_flow.rb:51:11:51:20 | ...[...] | provenance | | | params_flow.rb:51:11:51:20 | ...[...] | params_flow.rb:51:10:51:21 | ( ... ) | provenance | | | params_flow.rb:55:9:55:17 | call to taint | params_flow.rb:49:13:49:14 | p1 | provenance | | @@ -77,7 +71,6 @@ edges | params_flow.rb:57:9:57:17 | call to taint | params_flow.rb:57:8:57:18 | call to [] [element 0] | provenance | | | params_flow.rb:58:9:58:17 | call to taint | params_flow.rb:49:13:49:14 | p1 | provenance | | | params_flow.rb:58:20:58:24 | * ... [element 0] | params_flow.rb:49:17:49:24 | *posargs [element 0] | provenance | | -| params_flow.rb:58:20:58:24 | * ... [element 0] | params_flow.rb:49:17:49:24 | *posargs [element 0] | provenance | | | params_flow.rb:58:21:58:24 | args [element 0] | params_flow.rb:58:20:58:24 | * ... [element 0] | provenance | | | params_flow.rb:60:1:60:4 | args [element 0] | params_flow.rb:61:10:61:13 | args [element 0] | provenance | | | params_flow.rb:60:1:60:4 | args [element 1] | params_flow.rb:61:10:61:13 | args [element 1] | provenance | | @@ -97,12 +90,8 @@ edges | params_flow.rb:67:13:67:16 | args | params_flow.rb:67:12:67:16 | * ... [element 0] | provenance | | | params_flow.rb:69:14:69:14 | x | params_flow.rb:70:10:70:10 | x | provenance | | | params_flow.rb:69:17:69:17 | y | params_flow.rb:71:10:71:10 | y | provenance | | -| params_flow.rb:69:24:69:24 | w | params_flow.rb:74:10:74:10 | w | provenance | | -| params_flow.rb:69:27:69:27 | r | params_flow.rb:75:10:75:10 | r | provenance | | | params_flow.rb:78:10:78:18 | call to taint | params_flow.rb:69:14:69:14 | x | provenance | | | params_flow.rb:78:21:78:29 | call to taint | params_flow.rb:69:17:69:17 | y | provenance | | -| params_flow.rb:78:43:78:51 | call to taint | params_flow.rb:69:24:69:24 | w | provenance | | -| params_flow.rb:78:54:78:62 | call to taint | params_flow.rb:69:27:69:27 | r | provenance | | | params_flow.rb:80:1:80:4 | args [element 0] | params_flow.rb:81:22:81:25 | args [element 0] | provenance | | | params_flow.rb:80:8:80:51 | call to [] [element 0] | params_flow.rb:80:1:80:4 | args [element 0] | provenance | | | params_flow.rb:80:9:80:17 | call to taint | params_flow.rb:80:8:80:51 | call to [] [element 0] | provenance | | @@ -137,16 +126,11 @@ edges | params_flow.rb:94:33:94:36 | args [element 1] | params_flow.rb:94:32:94:36 | * ... [element 1] | provenance | | | params_flow.rb:94:33:94:36 | args [element 2] | params_flow.rb:94:32:94:36 | * ... [element 2] | provenance | | | params_flow.rb:94:33:94:36 | args [element 3] | params_flow.rb:94:32:94:36 | * ... [element 3] | provenance | | -| params_flow.rb:94:39:94:47 | call to taint | params_flow.rb:83:23:83:23 | w | provenance | | | params_flow.rb:96:10:96:18 | call to taint | params_flow.rb:69:14:69:14 | x | provenance | | | params_flow.rb:96:21:96:29 | call to taint | params_flow.rb:69:17:69:17 | y | provenance | | -| params_flow.rb:96:68:96:76 | call to taint | params_flow.rb:69:24:69:24 | w | provenance | | -| params_flow.rb:96:79:96:87 | call to taint | params_flow.rb:69:27:69:27 | r | provenance | | | params_flow.rb:98:19:98:19 | a | params_flow.rb:99:10:99:10 | a | provenance | | -| params_flow.rb:98:31:98:31 | b | params_flow.rb:102:10:102:10 | b | provenance | | | params_flow.rb:105:15:105:23 | call to taint | params_flow.rb:98:19:98:19 | a | provenance | | | params_flow.rb:106:15:106:23 | call to taint | params_flow.rb:98:19:98:19 | a | provenance | | -| params_flow.rb:106:37:106:45 | call to taint | params_flow.rb:98:31:98:31 | b | provenance | | | params_flow.rb:108:37:108:37 | a | params_flow.rb:109:10:109:10 | a | provenance | | | params_flow.rb:108:40:108:41 | *b [element 0] | params_flow.rb:110:10:110:10 | b [element 0] | provenance | | | params_flow.rb:108:44:108:44 | c | params_flow.rb:111:10:111:10 | c | provenance | | @@ -169,7 +153,6 @@ edges | params_flow.rb:131:10:131:14 | * ... [element 1] | params_flow.rb:83:17:83:17 | u | provenance | | | params_flow.rb:131:11:131:14 | args [element 0] | params_flow.rb:131:10:131:14 | * ... [element 0] | provenance | | | params_flow.rb:131:11:131:14 | args [element 1] | params_flow.rb:131:10:131:14 | * ... [element 1] | provenance | | -| params_flow.rb:131:17:131:25 | call to taint | params_flow.rb:83:17:83:17 | u | provenance | | | params_flow.rb:133:14:133:18 | *args [element 1] | params_flow.rb:134:10:134:13 | args [element 1] | provenance | | | params_flow.rb:134:10:134:13 | args [element 1] | params_flow.rb:134:10:134:16 | ...[...] | provenance | | | params_flow.rb:137:10:137:43 | * ... [element 1] | params_flow.rb:133:14:133:18 | *args [element 1] | provenance | | @@ -209,16 +192,12 @@ nodes | params_flow.rb:25:12:25:13 | p1 | semmle.label | p1 | | params_flow.rb:25:17:25:24 | **kwargs [element :p2] | semmle.label | **kwargs [element :p2] | | params_flow.rb:25:17:25:24 | **kwargs [element :p3] | semmle.label | **kwargs [element :p3] | -| params_flow.rb:25:17:25:24 | **kwargs [hash-splat position :p2] | semmle.label | **kwargs [hash-splat position :p2] | -| params_flow.rb:25:17:25:24 | **kwargs [hash-splat position :p3] | semmle.label | **kwargs [hash-splat position :p3] | | params_flow.rb:26:10:26:11 | p1 | semmle.label | p1 | | params_flow.rb:28:10:28:22 | ( ... ) | semmle.label | ( ... ) | | params_flow.rb:28:11:28:16 | kwargs [element :p2] | semmle.label | kwargs [element :p2] | -| params_flow.rb:28:11:28:16 | kwargs [hash-splat position :p2] | semmle.label | kwargs [hash-splat position :p2] | | params_flow.rb:28:11:28:21 | ...[...] | semmle.label | ...[...] | | params_flow.rb:29:10:29:22 | ( ... ) | semmle.label | ( ... ) | | params_flow.rb:29:11:29:16 | kwargs [element :p3] | semmle.label | kwargs [element :p3] | -| params_flow.rb:29:11:29:16 | kwargs [hash-splat position :p3] | semmle.label | kwargs [hash-splat position :p3] | | params_flow.rb:29:11:29:21 | ...[...] | semmle.label | ...[...] | | params_flow.rb:33:12:33:19 | call to taint | semmle.label | call to taint | | params_flow.rb:33:26:33:34 | call to taint | semmle.label | call to taint | @@ -263,11 +242,9 @@ nodes | params_flow.rb:47:13:47:16 | args [element 1] | semmle.label | args [element 1] | | params_flow.rb:49:13:49:14 | p1 | semmle.label | p1 | | params_flow.rb:49:17:49:24 | *posargs [element 0] | semmle.label | *posargs [element 0] | -| params_flow.rb:49:17:49:24 | *posargs [element 0] | semmle.label | *posargs [element 0] | | params_flow.rb:50:10:50:11 | p1 | semmle.label | p1 | | params_flow.rb:51:10:51:21 | ( ... ) | semmle.label | ( ... ) | | params_flow.rb:51:11:51:17 | posargs [element 0] | semmle.label | posargs [element 0] | -| params_flow.rb:51:11:51:17 | posargs [element 0] | semmle.label | posargs [element 0] | | params_flow.rb:51:11:51:20 | ...[...] | semmle.label | ...[...] | | params_flow.rb:55:9:55:17 | call to taint | semmle.label | call to taint | | params_flow.rb:55:20:55:28 | call to taint | semmle.label | call to taint | @@ -296,16 +273,10 @@ nodes | params_flow.rb:67:13:67:16 | args | semmle.label | args | | params_flow.rb:69:14:69:14 | x | semmle.label | x | | params_flow.rb:69:17:69:17 | y | semmle.label | y | -| params_flow.rb:69:24:69:24 | w | semmle.label | w | -| params_flow.rb:69:27:69:27 | r | semmle.label | r | | params_flow.rb:70:10:70:10 | x | semmle.label | x | | params_flow.rb:71:10:71:10 | y | semmle.label | y | -| params_flow.rb:74:10:74:10 | w | semmle.label | w | -| params_flow.rb:75:10:75:10 | r | semmle.label | r | | params_flow.rb:78:10:78:18 | call to taint | semmle.label | call to taint | | params_flow.rb:78:21:78:29 | call to taint | semmle.label | call to taint | -| params_flow.rb:78:43:78:51 | call to taint | semmle.label | call to taint | -| params_flow.rb:78:54:78:62 | call to taint | semmle.label | call to taint | | params_flow.rb:80:1:80:4 | args [element 0] | semmle.label | args [element 0] | | params_flow.rb:80:8:80:51 | call to [] [element 0] | semmle.label | call to [] [element 0] | | params_flow.rb:80:9:80:17 | call to taint | semmle.label | call to taint | @@ -346,18 +317,12 @@ nodes | params_flow.rb:94:33:94:36 | args [element 1] | semmle.label | args [element 1] | | params_flow.rb:94:33:94:36 | args [element 2] | semmle.label | args [element 2] | | params_flow.rb:94:33:94:36 | args [element 3] | semmle.label | args [element 3] | -| params_flow.rb:94:39:94:47 | call to taint | semmle.label | call to taint | | params_flow.rb:96:10:96:18 | call to taint | semmle.label | call to taint | | params_flow.rb:96:21:96:29 | call to taint | semmle.label | call to taint | -| params_flow.rb:96:68:96:76 | call to taint | semmle.label | call to taint | -| params_flow.rb:96:79:96:87 | call to taint | semmle.label | call to taint | | params_flow.rb:98:19:98:19 | a | semmle.label | a | -| params_flow.rb:98:31:98:31 | b | semmle.label | b | | params_flow.rb:99:10:99:10 | a | semmle.label | a | -| params_flow.rb:102:10:102:10 | b | semmle.label | b | | params_flow.rb:105:15:105:23 | call to taint | semmle.label | call to taint | | params_flow.rb:106:15:106:23 | call to taint | semmle.label | call to taint | -| params_flow.rb:106:37:106:45 | call to taint | semmle.label | call to taint | | params_flow.rb:108:37:108:37 | a | semmle.label | a | | params_flow.rb:108:40:108:41 | *b [element 0] | semmle.label | *b [element 0] | | params_flow.rb:108:44:108:44 | c | semmle.label | c | @@ -382,7 +347,6 @@ nodes | params_flow.rb:131:10:131:14 | * ... [element 1] | semmle.label | * ... [element 1] | | params_flow.rb:131:11:131:14 | args [element 0] | semmle.label | args [element 0] | | params_flow.rb:131:11:131:14 | args [element 1] | semmle.label | args [element 1] | -| params_flow.rb:131:17:131:25 | call to taint | semmle.label | call to taint | | params_flow.rb:133:14:133:18 | *args [element 1] | semmle.label | *args [element 1] | | params_flow.rb:134:10:134:13 | args [element 1] | semmle.label | args [element 1] | | params_flow.rb:134:10:134:16 | ...[...] | semmle.label | ...[...] | @@ -446,23 +410,16 @@ testFailures | params_flow.rb:71:10:71:10 | y | params_flow.rb:78:21:78:29 | call to taint | params_flow.rb:71:10:71:10 | y | $@ | params_flow.rb:78:21:78:29 | call to taint | call to taint | | params_flow.rb:71:10:71:10 | y | params_flow.rb:80:9:80:17 | call to taint | params_flow.rb:71:10:71:10 | y | $@ | params_flow.rb:80:9:80:17 | call to taint | call to taint | | params_flow.rb:71:10:71:10 | y | params_flow.rb:96:21:96:29 | call to taint | params_flow.rb:71:10:71:10 | y | $@ | params_flow.rb:96:21:96:29 | call to taint | call to taint | -| params_flow.rb:74:10:74:10 | w | params_flow.rb:78:43:78:51 | call to taint | params_flow.rb:74:10:74:10 | w | $@ | params_flow.rb:78:43:78:51 | call to taint | call to taint | -| params_flow.rb:74:10:74:10 | w | params_flow.rb:96:68:96:76 | call to taint | params_flow.rb:74:10:74:10 | w | $@ | params_flow.rb:96:68:96:76 | call to taint | call to taint | -| params_flow.rb:75:10:75:10 | r | params_flow.rb:78:54:78:62 | call to taint | params_flow.rb:75:10:75:10 | r | $@ | params_flow.rb:78:54:78:62 | call to taint | call to taint | -| params_flow.rb:75:10:75:10 | r | params_flow.rb:96:79:96:87 | call to taint | params_flow.rb:75:10:75:10 | r | $@ | params_flow.rb:96:79:96:87 | call to taint | call to taint | | params_flow.rb:84:10:84:10 | t | params_flow.rb:94:10:94:18 | call to taint | params_flow.rb:84:10:84:10 | t | $@ | params_flow.rb:94:10:94:18 | call to taint | call to taint | | params_flow.rb:84:10:84:10 | t | params_flow.rb:130:9:130:17 | call to taint | params_flow.rb:84:10:84:10 | t | $@ | params_flow.rb:130:9:130:17 | call to taint | call to taint | | params_flow.rb:85:10:85:10 | u | params_flow.rb:94:21:94:29 | call to taint | params_flow.rb:85:10:85:10 | u | $@ | params_flow.rb:94:21:94:29 | call to taint | call to taint | | params_flow.rb:85:10:85:10 | u | params_flow.rb:130:20:130:28 | call to taint | params_flow.rb:85:10:85:10 | u | $@ | params_flow.rb:130:20:130:28 | call to taint | call to taint | -| params_flow.rb:85:10:85:10 | u | params_flow.rb:131:17:131:25 | call to taint | params_flow.rb:85:10:85:10 | u | $@ | params_flow.rb:131:17:131:25 | call to taint | call to taint | | params_flow.rb:86:10:86:10 | v | params_flow.rb:93:9:93:17 | call to taint | params_flow.rb:86:10:86:10 | v | $@ | params_flow.rb:93:9:93:17 | call to taint | call to taint | | params_flow.rb:87:10:87:10 | w | params_flow.rb:93:20:93:28 | call to taint | params_flow.rb:87:10:87:10 | w | $@ | params_flow.rb:93:20:93:28 | call to taint | call to taint | -| params_flow.rb:87:10:87:10 | w | params_flow.rb:94:39:94:47 | call to taint | params_flow.rb:87:10:87:10 | w | $@ | params_flow.rb:94:39:94:47 | call to taint | call to taint | | params_flow.rb:88:10:88:10 | x | params_flow.rb:93:31:93:39 | call to taint | params_flow.rb:88:10:88:10 | x | $@ | params_flow.rb:93:31:93:39 | call to taint | call to taint | | params_flow.rb:89:10:89:10 | y | params_flow.rb:93:42:93:50 | call to taint | params_flow.rb:89:10:89:10 | y | $@ | params_flow.rb:93:42:93:50 | call to taint | call to taint | | params_flow.rb:99:10:99:10 | a | params_flow.rb:105:15:105:23 | call to taint | params_flow.rb:99:10:99:10 | a | $@ | params_flow.rb:105:15:105:23 | call to taint | call to taint | | params_flow.rb:99:10:99:10 | a | params_flow.rb:106:15:106:23 | call to taint | params_flow.rb:99:10:99:10 | a | $@ | params_flow.rb:106:15:106:23 | call to taint | call to taint | -| params_flow.rb:102:10:102:10 | b | params_flow.rb:106:37:106:45 | call to taint | params_flow.rb:102:10:102:10 | b | $@ | params_flow.rb:106:37:106:45 | call to taint | call to taint | | params_flow.rb:109:10:109:10 | a | params_flow.rb:114:33:114:41 | call to taint | params_flow.rb:109:10:109:10 | a | $@ | params_flow.rb:114:33:114:41 | call to taint | call to taint | | params_flow.rb:110:10:110:13 | ...[...] | params_flow.rb:114:44:114:52 | call to taint | params_flow.rb:110:10:110:13 | ...[...] | $@ | params_flow.rb:114:44:114:52 | call to taint | call to taint | | params_flow.rb:111:10:111:10 | c | params_flow.rb:114:58:114:66 | call to taint | params_flow.rb:111:10:111:10 | c | $@ | params_flow.rb:114:58:114:66 | call to taint | call to taint | diff --git a/ruby/ql/test/library-tests/dataflow/params/params_flow.rb b/ruby/ql/test/library-tests/dataflow/params/params_flow.rb index 34599eb35a9..65b663a7c4e 100644 --- a/ruby/ql/test/library-tests/dataflow/params/params_flow.rb +++ b/ruby/ql/test/library-tests/dataflow/params/params_flow.rb @@ -69,10 +69,10 @@ splatstuff(*args) def splatmid(x, y, *z, w, r) sink x # $ hasValueFlow=27 $ hasValueFlow=32 $ hasValueFlow=45 sink y # $ hasValueFlow=28 $ hasValueFlow=46 $ hasValueFlow=33 - sink z[0] # MISSING: $ hasValueFlow=47 $ hasValueFlow=29 $ hasValueFlow=34 + sink z[0] # $ MISSING: hasValueFlow=47 $ hasValueFlow=29 $ hasValueFlow=34 sink z[1] # $ MISSING: hasValueFlow=48 $ hasValueFlow=35 - sink w # $ hasValueFlow=30 $ hasValueFlow=50 $ MISSING: hasValueFlow=36 - sink r # $ hasValueFlow=31 $ hasValueFlow=51 $ MISSING: hasValueFlow=37 + sink w # $ MISSING: hasValueFlow=30 $ hasValueFlow=50 $ hasValueFlow=36 + sink r # $ MISSING: hasValueFlow=31 $ hasValueFlow=51 $ hasValueFlow=37 end splatmid(taint(27), taint(28), taint(29), taint(30), taint(31)) @@ -82,9 +82,9 @@ splatmid(taint(32), *args, taint(37)) def pos_many(t, u, v, w, x, y, z) sink t # $ hasValueFlow=38 $ hasValueFlow=66 - sink u # $ hasValueFlow=39 $ hasValueFlow=67 $ SPURIOUS: hasValueFlow=68 + sink u # $ hasValueFlow=39 $ hasValueFlow=67 sink v # $ hasValueFlow=40 - sink w # $ hasValueFlow=41 $ SPURIOUS: hasValueFlow=44 + sink w # $ hasValueFlow=41 sink x # $ hasValueFlow=42 sink y # $ hasValueFlow=43 sink z # $ MISSING: hasValueFlow=44 @@ -99,7 +99,7 @@ def splatmidsmall(a, *splats, b) sink a # $ hasValueFlow=52 $ hasValueFlow=55 sink splats[0] # $ MISSING: hasValueFlow=53 sink splats[1] - sink b # $ hasValueFlow=57 $ MISSING: hasValueFlow=54 + sink b # $ MISSING: hasValueFlow=57 $ hasValueFlow=54 end splatmidsmall(taint(52), *[taint(53), taint(54)]) diff --git a/ruby/ql/test/library-tests/dataflow/type-tracker/TypeTracker.expected b/ruby/ql/test/library-tests/dataflow/type-tracker/TypeTracker.expected index d843d8e3c6d..7b308c6816c 100644 --- a/ruby/ql/test/library-tests/dataflow/type-tracker/TypeTracker.expected +++ b/ruby/ql/test/library-tests/dataflow/type-tracker/TypeTracker.expected @@ -14,12 +14,12 @@ track | type_tracker.rb:2:16:2:18 | val | type tracker without call steps | type_tracker.rb:8:9:8:14 | @field | | type_tracker.rb:2:16:2:18 | val | type tracker without call steps | type_tracker.rb:14:5:14:13 | call to field= | | type_tracker.rb:2:16:2:18 | val | type tracker without call steps | type_tracker.rb:15:10:15:18 | call to field | -| type_tracker.rb:2:16:2:18 | val | type tracker without call steps with content splat position 0 | type_tracker.rb:3:9:3:23 | synthetic splat argument | -| type_tracker.rb:2:16:2:18 | val | type tracker without call steps with content splat position 0 | type_tracker.rb:15:5:15:18 | synthetic splat argument | +| type_tracker.rb:2:16:2:18 | val | type tracker without call steps with content element 0 | type_tracker.rb:3:9:3:23 | synthetic splat argument | +| type_tracker.rb:2:16:2:18 | val | type tracker without call steps with content element 0 | type_tracker.rb:15:5:15:18 | synthetic splat argument | | type_tracker.rb:3:9:3:23 | call to puts | type tracker without call steps | type_tracker.rb:3:9:3:23 | call to puts | | type_tracker.rb:3:9:3:23 | synthetic splat argument | type tracker without call steps | type_tracker.rb:3:9:3:23 | synthetic splat argument | | type_tracker.rb:3:14:3:23 | call to field | type tracker without call steps | type_tracker.rb:3:14:3:23 | call to field | -| type_tracker.rb:3:14:3:23 | call to field | type tracker without call steps with content splat position 0 | type_tracker.rb:3:9:3:23 | synthetic splat argument | +| type_tracker.rb:3:14:3:23 | call to field | type tracker without call steps with content element 0 | type_tracker.rb:3:9:3:23 | synthetic splat argument | | type_tracker.rb:4:9:4:14 | @field | type tracker without call steps | type_tracker.rb:4:9:4:14 | @field | | type_tracker.rb:7:5:9:7 | &block | type tracker without call steps | type_tracker.rb:7:5:9:7 | &block | | type_tracker.rb:7:5:9:7 | field | type tracker without call steps | type_tracker.rb:7:5:9:7 | field | @@ -27,8 +27,8 @@ track | type_tracker.rb:8:9:8:14 | @field | type tracker without call steps | type_tracker.rb:3:14:3:23 | call to field | | type_tracker.rb:8:9:8:14 | @field | type tracker without call steps | type_tracker.rb:8:9:8:14 | @field | | type_tracker.rb:8:9:8:14 | @field | type tracker without call steps | type_tracker.rb:15:10:15:18 | call to field | -| type_tracker.rb:8:9:8:14 | @field | type tracker without call steps with content splat position 0 | type_tracker.rb:3:9:3:23 | synthetic splat argument | -| type_tracker.rb:8:9:8:14 | @field | type tracker without call steps with content splat position 0 | type_tracker.rb:15:5:15:18 | synthetic splat argument | +| type_tracker.rb:8:9:8:14 | @field | type tracker without call steps with content element 0 | type_tracker.rb:3:9:3:23 | synthetic splat argument | +| type_tracker.rb:8:9:8:14 | @field | type tracker without call steps with content element 0 | type_tracker.rb:15:5:15:18 | synthetic splat argument | | type_tracker.rb:12:1:16:3 | &block | type tracker without call steps | type_tracker.rb:12:1:16:3 | &block | | type_tracker.rb:12:1:16:3 | m | type tracker without call steps | type_tracker.rb:12:1:16:3 | m | | type_tracker.rb:12:1:16:3 | self in m | type tracker without call steps | type_tracker.rb:12:1:16:3 | self in m | @@ -40,61 +40,56 @@ track | type_tracker.rb:14:5:14:7 | [post] var | type tracker with call steps | type_tracker.rb:7:5:9:7 | self in field | | type_tracker.rb:14:5:14:7 | [post] var | type tracker without call steps | type_tracker.rb:14:5:14:7 | [post] var | | type_tracker.rb:14:5:14:13 | call to field= | type tracker without call steps | type_tracker.rb:14:5:14:13 | call to field= | -| type_tracker.rb:14:5:14:13 | synthetic splat argument | type tracker with call steps | type_tracker.rb:2:5:5:7 | synthetic splat parameter | | type_tracker.rb:14:5:14:13 | synthetic splat argument | type tracker without call steps | type_tracker.rb:14:5:14:13 | synthetic splat argument | | type_tracker.rb:14:17:14:23 | "hello" | type tracker with call steps | type_tracker.rb:2:16:2:18 | val | | type_tracker.rb:14:17:14:23 | "hello" | type tracker with call steps | type_tracker.rb:8:9:8:14 | @field | | type_tracker.rb:14:17:14:23 | "hello" | type tracker with call steps with content attribute field | type_tracker.rb:7:5:9:7 | self in field | -| type_tracker.rb:14:17:14:23 | "hello" | type tracker with call steps with content splat position 0 | type_tracker.rb:2:5:5:7 | synthetic splat parameter | | type_tracker.rb:14:17:14:23 | "hello" | type tracker without call steps | type_tracker.rb:14:5:14:13 | call to field= | | type_tracker.rb:14:17:14:23 | "hello" | type tracker without call steps | type_tracker.rb:14:17:14:23 | "hello" | | type_tracker.rb:14:17:14:23 | "hello" | type tracker without call steps | type_tracker.rb:15:10:15:18 | call to field | | type_tracker.rb:14:17:14:23 | "hello" | type tracker without call steps with content attribute field | type_tracker.rb:14:5:14:7 | [post] var | -| type_tracker.rb:14:17:14:23 | "hello" | type tracker without call steps with content splat position 0 | type_tracker.rb:14:5:14:13 | synthetic splat argument | -| type_tracker.rb:14:17:14:23 | "hello" | type tracker without call steps with content splat position 0 | type_tracker.rb:15:5:15:18 | synthetic splat argument | +| type_tracker.rb:14:17:14:23 | "hello" | type tracker without call steps with content element 0 | type_tracker.rb:14:5:14:13 | synthetic splat argument | +| type_tracker.rb:14:17:14:23 | "hello" | type tracker without call steps with content element 0 | type_tracker.rb:15:5:15:18 | synthetic splat argument | | type_tracker.rb:14:17:14:23 | __synth__0 | type tracker without call steps | type_tracker.rb:14:17:14:23 | __synth__0 | | type_tracker.rb:15:5:15:18 | call to puts | type tracker without call steps | type_tracker.rb:15:5:15:18 | call to puts | | type_tracker.rb:15:5:15:18 | synthetic splat argument | type tracker without call steps | type_tracker.rb:15:5:15:18 | synthetic splat argument | | type_tracker.rb:15:10:15:18 | call to field | type tracker without call steps | type_tracker.rb:15:10:15:18 | call to field | -| type_tracker.rb:15:10:15:18 | call to field | type tracker without call steps with content splat position 0 | type_tracker.rb:15:5:15:18 | synthetic splat argument | +| type_tracker.rb:15:10:15:18 | call to field | type tracker without call steps with content element 0 | type_tracker.rb:15:5:15:18 | synthetic splat argument | | type_tracker.rb:18:1:21:3 | &block | type tracker without call steps | type_tracker.rb:18:1:21:3 | &block | | type_tracker.rb:18:1:21:3 | positional | type tracker without call steps | type_tracker.rb:18:1:21:3 | positional | | type_tracker.rb:18:1:21:3 | self in positional | type tracker without call steps | type_tracker.rb:18:1:21:3 | self in positional | | type_tracker.rb:18:1:21:3 | synthetic splat parameter | type tracker without call steps | type_tracker.rb:18:1:21:3 | synthetic splat parameter | | type_tracker.rb:18:16:18:17 | p1 | type tracker without call steps | type_tracker.rb:18:16:18:17 | p1 | | type_tracker.rb:18:16:18:17 | p1 | type tracker without call steps | type_tracker.rb:18:16:18:17 | p1 | -| type_tracker.rb:18:16:18:17 | p1 | type tracker without call steps with content splat position 0 | type_tracker.rb:19:5:19:11 | synthetic splat argument | +| type_tracker.rb:18:16:18:17 | p1 | type tracker without call steps with content element 0 | type_tracker.rb:19:5:19:11 | synthetic splat argument | | type_tracker.rb:18:20:18:21 | p2 | type tracker without call steps | type_tracker.rb:18:20:18:21 | p2 | | type_tracker.rb:18:20:18:21 | p2 | type tracker without call steps | type_tracker.rb:18:20:18:21 | p2 | -| type_tracker.rb:18:20:18:21 | p2 | type tracker without call steps with content splat position 0 | type_tracker.rb:20:5:20:11 | synthetic splat argument | +| type_tracker.rb:18:20:18:21 | p2 | type tracker without call steps with content element 0 | type_tracker.rb:20:5:20:11 | synthetic splat argument | | type_tracker.rb:19:5:19:11 | call to puts | type tracker without call steps | type_tracker.rb:19:5:19:11 | call to puts | | type_tracker.rb:19:5:19:11 | synthetic splat argument | type tracker without call steps | type_tracker.rb:19:5:19:11 | synthetic splat argument | | type_tracker.rb:20:5:20:11 | call to puts | type tracker without call steps | type_tracker.rb:20:5:20:11 | call to puts | | type_tracker.rb:20:5:20:11 | call to puts | type tracker without call steps | type_tracker.rb:23:1:23:16 | call to positional | | type_tracker.rb:20:5:20:11 | synthetic splat argument | type tracker without call steps | type_tracker.rb:20:5:20:11 | synthetic splat argument | | type_tracker.rb:23:1:23:16 | call to positional | type tracker without call steps | type_tracker.rb:23:1:23:16 | call to positional | -| type_tracker.rb:23:1:23:16 | synthetic splat argument | type tracker with call steps | type_tracker.rb:18:1:21:3 | synthetic splat parameter | | type_tracker.rb:23:1:23:16 | synthetic splat argument | type tracker without call steps | type_tracker.rb:23:1:23:16 | synthetic splat argument | | type_tracker.rb:23:12:23:12 | 1 | type tracker with call steps | type_tracker.rb:18:16:18:17 | p1 | -| type_tracker.rb:23:12:23:12 | 1 | type tracker with call steps with content splat position 0 | type_tracker.rb:18:1:21:3 | synthetic splat parameter | -| type_tracker.rb:23:12:23:12 | 1 | type tracker with call steps with content splat position 0 | type_tracker.rb:19:5:19:11 | synthetic splat argument | +| type_tracker.rb:23:12:23:12 | 1 | type tracker with call steps with content element 0 | type_tracker.rb:19:5:19:11 | synthetic splat argument | | type_tracker.rb:23:12:23:12 | 1 | type tracker without call steps | type_tracker.rb:23:12:23:12 | 1 | -| type_tracker.rb:23:12:23:12 | 1 | type tracker without call steps with content splat position 0 | type_tracker.rb:23:1:23:16 | synthetic splat argument | +| type_tracker.rb:23:12:23:12 | 1 | type tracker without call steps with content element 0 | type_tracker.rb:23:1:23:16 | synthetic splat argument | | type_tracker.rb:23:15:23:15 | 2 | type tracker with call steps | type_tracker.rb:18:20:18:21 | p2 | -| type_tracker.rb:23:15:23:15 | 2 | type tracker with call steps with content splat position 0 | type_tracker.rb:20:5:20:11 | synthetic splat argument | -| type_tracker.rb:23:15:23:15 | 2 | type tracker with call steps with content splat position 1 | type_tracker.rb:18:1:21:3 | synthetic splat parameter | +| type_tracker.rb:23:15:23:15 | 2 | type tracker with call steps with content element 0 | type_tracker.rb:20:5:20:11 | synthetic splat argument | | type_tracker.rb:23:15:23:15 | 2 | type tracker without call steps | type_tracker.rb:23:15:23:15 | 2 | -| type_tracker.rb:23:15:23:15 | 2 | type tracker without call steps with content splat position 1 | type_tracker.rb:23:1:23:16 | synthetic splat argument | +| type_tracker.rb:23:15:23:15 | 2 | type tracker without call steps with content element 1 | type_tracker.rb:23:1:23:16 | synthetic splat argument | | type_tracker.rb:25:1:28:3 | &block | type tracker without call steps | type_tracker.rb:25:1:28:3 | &block | | type_tracker.rb:25:1:28:3 | keyword | type tracker without call steps | type_tracker.rb:25:1:28:3 | keyword | | type_tracker.rb:25:1:28:3 | self in keyword | type tracker without call steps | type_tracker.rb:25:1:28:3 | self in keyword | | type_tracker.rb:25:1:28:3 | synthetic hash-splat parameter | type tracker without call steps | type_tracker.rb:25:1:28:3 | synthetic hash-splat parameter | | type_tracker.rb:25:13:25:14 | p1 | type tracker without call steps | type_tracker.rb:25:13:25:14 | p1 | | type_tracker.rb:25:13:25:14 | p1 | type tracker without call steps | type_tracker.rb:25:13:25:14 | p1 | -| type_tracker.rb:25:13:25:14 | p1 | type tracker without call steps with content splat position 0 | type_tracker.rb:26:5:26:11 | synthetic splat argument | +| type_tracker.rb:25:13:25:14 | p1 | type tracker without call steps with content element 0 | type_tracker.rb:26:5:26:11 | synthetic splat argument | | type_tracker.rb:25:18:25:19 | p2 | type tracker without call steps | type_tracker.rb:25:18:25:19 | p2 | | type_tracker.rb:25:18:25:19 | p2 | type tracker without call steps | type_tracker.rb:25:18:25:19 | p2 | -| type_tracker.rb:25:18:25:19 | p2 | type tracker without call steps with content splat position 0 | type_tracker.rb:27:5:27:11 | synthetic splat argument | +| type_tracker.rb:25:18:25:19 | p2 | type tracker without call steps with content element 0 | type_tracker.rb:27:5:27:11 | synthetic splat argument | | type_tracker.rb:26:5:26:11 | call to puts | type tracker without call steps | type_tracker.rb:26:5:26:11 | call to puts | | type_tracker.rb:26:5:26:11 | synthetic splat argument | type tracker without call steps | type_tracker.rb:26:5:26:11 | synthetic splat argument | | type_tracker.rb:27:5:27:11 | call to puts | type tracker without call steps | type_tracker.rb:27:5:27:11 | call to puts | @@ -103,56 +98,47 @@ track | type_tracker.rb:27:5:27:11 | call to puts | type tracker without call steps | type_tracker.rb:32:1:32:27 | call to keyword | | type_tracker.rb:27:5:27:11 | synthetic splat argument | type tracker without call steps | type_tracker.rb:27:5:27:11 | synthetic splat argument | | type_tracker.rb:30:1:30:21 | call to keyword | type tracker without call steps | type_tracker.rb:30:1:30:21 | call to keyword | -| type_tracker.rb:30:1:30:21 | synthetic hash-splat argument | type tracker with call steps | type_tracker.rb:25:1:28:3 | synthetic hash-splat parameter | | type_tracker.rb:30:1:30:21 | synthetic hash-splat argument | type tracker without call steps | type_tracker.rb:30:1:30:21 | synthetic hash-splat argument | | type_tracker.rb:30:9:30:10 | :p1 | type tracker without call steps | type_tracker.rb:30:9:30:10 | :p1 | | type_tracker.rb:30:9:30:13 | Pair | type tracker without call steps | type_tracker.rb:30:9:30:13 | Pair | | type_tracker.rb:30:13:30:13 | 3 | type tracker with call steps | type_tracker.rb:25:13:25:14 | p1 | -| type_tracker.rb:30:13:30:13 | 3 | type tracker with call steps with content hash-splat position :p1 | type_tracker.rb:25:1:28:3 | synthetic hash-splat parameter | -| type_tracker.rb:30:13:30:13 | 3 | type tracker with call steps with content splat position 0 | type_tracker.rb:26:5:26:11 | synthetic splat argument | +| type_tracker.rb:30:13:30:13 | 3 | type tracker with call steps with content element 0 | type_tracker.rb:26:5:26:11 | synthetic splat argument | | type_tracker.rb:30:13:30:13 | 3 | type tracker without call steps | type_tracker.rb:30:13:30:13 | 3 | -| type_tracker.rb:30:13:30:13 | 3 | type tracker without call steps with content hash-splat position :p1 | type_tracker.rb:30:1:30:21 | synthetic hash-splat argument | +| type_tracker.rb:30:13:30:13 | 3 | type tracker without call steps with content element :p1 | type_tracker.rb:30:1:30:21 | synthetic hash-splat argument | | type_tracker.rb:30:16:30:17 | :p2 | type tracker without call steps | type_tracker.rb:30:16:30:17 | :p2 | | type_tracker.rb:30:16:30:20 | Pair | type tracker without call steps | type_tracker.rb:30:16:30:20 | Pair | | type_tracker.rb:30:20:30:20 | 4 | type tracker with call steps | type_tracker.rb:25:18:25:19 | p2 | -| type_tracker.rb:30:20:30:20 | 4 | type tracker with call steps with content hash-splat position :p2 | type_tracker.rb:25:1:28:3 | synthetic hash-splat parameter | -| type_tracker.rb:30:20:30:20 | 4 | type tracker with call steps with content splat position 0 | type_tracker.rb:27:5:27:11 | synthetic splat argument | +| type_tracker.rb:30:20:30:20 | 4 | type tracker with call steps with content element 0 | type_tracker.rb:27:5:27:11 | synthetic splat argument | | type_tracker.rb:30:20:30:20 | 4 | type tracker without call steps | type_tracker.rb:30:20:30:20 | 4 | -| type_tracker.rb:30:20:30:20 | 4 | type tracker without call steps with content hash-splat position :p2 | type_tracker.rb:30:1:30:21 | synthetic hash-splat argument | +| type_tracker.rb:30:20:30:20 | 4 | type tracker without call steps with content element :p2 | type_tracker.rb:30:1:30:21 | synthetic hash-splat argument | | type_tracker.rb:31:1:31:21 | call to keyword | type tracker without call steps | type_tracker.rb:31:1:31:21 | call to keyword | -| type_tracker.rb:31:1:31:21 | synthetic hash-splat argument | type tracker with call steps | type_tracker.rb:25:1:28:3 | synthetic hash-splat parameter | | type_tracker.rb:31:1:31:21 | synthetic hash-splat argument | type tracker without call steps | type_tracker.rb:31:1:31:21 | synthetic hash-splat argument | | type_tracker.rb:31:9:31:10 | :p2 | type tracker without call steps | type_tracker.rb:31:9:31:10 | :p2 | | type_tracker.rb:31:9:31:13 | Pair | type tracker without call steps | type_tracker.rb:31:9:31:13 | Pair | | type_tracker.rb:31:13:31:13 | 5 | type tracker with call steps | type_tracker.rb:25:18:25:19 | p2 | -| type_tracker.rb:31:13:31:13 | 5 | type tracker with call steps with content hash-splat position :p2 | type_tracker.rb:25:1:28:3 | synthetic hash-splat parameter | -| type_tracker.rb:31:13:31:13 | 5 | type tracker with call steps with content splat position 0 | type_tracker.rb:27:5:27:11 | synthetic splat argument | +| type_tracker.rb:31:13:31:13 | 5 | type tracker with call steps with content element 0 | type_tracker.rb:27:5:27:11 | synthetic splat argument | | type_tracker.rb:31:13:31:13 | 5 | type tracker without call steps | type_tracker.rb:31:13:31:13 | 5 | -| type_tracker.rb:31:13:31:13 | 5 | type tracker without call steps with content hash-splat position :p2 | type_tracker.rb:31:1:31:21 | synthetic hash-splat argument | +| type_tracker.rb:31:13:31:13 | 5 | type tracker without call steps with content element :p2 | type_tracker.rb:31:1:31:21 | synthetic hash-splat argument | | type_tracker.rb:31:16:31:17 | :p1 | type tracker without call steps | type_tracker.rb:31:16:31:17 | :p1 | | type_tracker.rb:31:16:31:20 | Pair | type tracker without call steps | type_tracker.rb:31:16:31:20 | Pair | | type_tracker.rb:31:20:31:20 | 6 | type tracker with call steps | type_tracker.rb:25:13:25:14 | p1 | -| type_tracker.rb:31:20:31:20 | 6 | type tracker with call steps with content hash-splat position :p1 | type_tracker.rb:25:1:28:3 | synthetic hash-splat parameter | -| type_tracker.rb:31:20:31:20 | 6 | type tracker with call steps with content splat position 0 | type_tracker.rb:26:5:26:11 | synthetic splat argument | +| type_tracker.rb:31:20:31:20 | 6 | type tracker with call steps with content element 0 | type_tracker.rb:26:5:26:11 | synthetic splat argument | | type_tracker.rb:31:20:31:20 | 6 | type tracker without call steps | type_tracker.rb:31:20:31:20 | 6 | -| type_tracker.rb:31:20:31:20 | 6 | type tracker without call steps with content hash-splat position :p1 | type_tracker.rb:31:1:31:21 | synthetic hash-splat argument | +| type_tracker.rb:31:20:31:20 | 6 | type tracker without call steps with content element :p1 | type_tracker.rb:31:1:31:21 | synthetic hash-splat argument | | type_tracker.rb:32:1:32:27 | call to keyword | type tracker without call steps | type_tracker.rb:32:1:32:27 | call to keyword | -| type_tracker.rb:32:1:32:27 | synthetic hash-splat argument | type tracker with call steps | type_tracker.rb:25:1:28:3 | synthetic hash-splat parameter | | type_tracker.rb:32:1:32:27 | synthetic hash-splat argument | type tracker without call steps | type_tracker.rb:32:1:32:27 | synthetic hash-splat argument | | type_tracker.rb:32:9:32:11 | :p2 | type tracker without call steps | type_tracker.rb:32:9:32:11 | :p2 | | type_tracker.rb:32:9:32:16 | Pair | type tracker without call steps | type_tracker.rb:32:9:32:16 | Pair | | type_tracker.rb:32:16:32:16 | 7 | type tracker with call steps | type_tracker.rb:25:18:25:19 | p2 | -| type_tracker.rb:32:16:32:16 | 7 | type tracker with call steps with content hash-splat position :p2 | type_tracker.rb:25:1:28:3 | synthetic hash-splat parameter | -| type_tracker.rb:32:16:32:16 | 7 | type tracker with call steps with content splat position 0 | type_tracker.rb:27:5:27:11 | synthetic splat argument | +| type_tracker.rb:32:16:32:16 | 7 | type tracker with call steps with content element 0 | type_tracker.rb:27:5:27:11 | synthetic splat argument | | type_tracker.rb:32:16:32:16 | 7 | type tracker without call steps | type_tracker.rb:32:16:32:16 | 7 | -| type_tracker.rb:32:16:32:16 | 7 | type tracker without call steps with content hash-splat position :p2 | type_tracker.rb:32:1:32:27 | synthetic hash-splat argument | +| type_tracker.rb:32:16:32:16 | 7 | type tracker without call steps with content element :p2 | type_tracker.rb:32:1:32:27 | synthetic hash-splat argument | | type_tracker.rb:32:19:32:21 | :p1 | type tracker without call steps | type_tracker.rb:32:19:32:21 | :p1 | | type_tracker.rb:32:19:32:26 | Pair | type tracker without call steps | type_tracker.rb:32:19:32:26 | Pair | | type_tracker.rb:32:26:32:26 | 8 | type tracker with call steps | type_tracker.rb:25:13:25:14 | p1 | -| type_tracker.rb:32:26:32:26 | 8 | type tracker with call steps with content hash-splat position :p1 | type_tracker.rb:25:1:28:3 | synthetic hash-splat parameter | -| type_tracker.rb:32:26:32:26 | 8 | type tracker with call steps with content splat position 0 | type_tracker.rb:26:5:26:11 | synthetic splat argument | +| type_tracker.rb:32:26:32:26 | 8 | type tracker with call steps with content element 0 | type_tracker.rb:26:5:26:11 | synthetic splat argument | | type_tracker.rb:32:26:32:26 | 8 | type tracker without call steps | type_tracker.rb:32:26:32:26 | 8 | -| type_tracker.rb:32:26:32:26 | 8 | type tracker without call steps with content hash-splat position :p1 | type_tracker.rb:32:1:32:27 | synthetic hash-splat argument | +| type_tracker.rb:32:26:32:26 | 8 | type tracker without call steps with content element :p1 | type_tracker.rb:32:1:32:27 | synthetic hash-splat argument | | type_tracker.rb:34:1:53:3 | &block | type tracker without call steps | type_tracker.rb:34:1:53:3 | &block | | type_tracker.rb:34:1:53:3 | self in throughArray | type tracker without call steps | type_tracker.rb:34:1:53:3 | self in throughArray | | type_tracker.rb:34:1:53:3 | synthetic splat parameter | type tracker without call steps | type_tracker.rb:34:1:53:3 | synthetic splat parameter | @@ -169,18 +155,18 @@ track | type_tracker.rb:34:18:34:20 | obj | type tracker without call steps with content element 0 | type_tracker.rb:35:11:35:15 | synthetic splat argument | | type_tracker.rb:34:18:34:20 | obj | type tracker without call steps with content element 0 or unknown | type_tracker.rb:43:5:43:10 | [post] array2 | | type_tracker.rb:34:18:34:20 | obj | type tracker without call steps with content element 0 or unknown | type_tracker.rb:47:5:47:10 | [post] array3 | -| type_tracker.rb:34:18:34:20 | obj | type tracker without call steps with content splat position 1 | type_tracker.rb:39:5:39:12 | synthetic splat argument | -| type_tracker.rb:34:18:34:20 | obj | type tracker without call steps with content splat position 1 | type_tracker.rb:43:5:43:13 | synthetic splat argument | -| type_tracker.rb:34:18:34:20 | obj | type tracker without call steps with content splat position 1 | type_tracker.rb:47:5:47:13 | synthetic splat argument | -| type_tracker.rb:34:18:34:20 | obj | type tracker without call steps with content splat position 1 | type_tracker.rb:51:5:51:13 | synthetic splat argument | +| type_tracker.rb:34:18:34:20 | obj | type tracker without call steps with content element 1 | type_tracker.rb:39:5:39:12 | synthetic splat argument | +| type_tracker.rb:34:18:34:20 | obj | type tracker without call steps with content element 1 | type_tracker.rb:43:5:43:13 | synthetic splat argument | +| type_tracker.rb:34:18:34:20 | obj | type tracker without call steps with content element 1 | type_tracker.rb:47:5:47:13 | synthetic splat argument | +| type_tracker.rb:34:18:34:20 | obj | type tracker without call steps with content element 1 | type_tracker.rb:51:5:51:13 | synthetic splat argument | | type_tracker.rb:34:23:34:23 | y | type tracker without call steps | type_tracker.rb:34:23:34:23 | y | | type_tracker.rb:34:23:34:23 | y | type tracker without call steps | type_tracker.rb:34:23:34:23 | y | -| type_tracker.rb:34:23:34:23 | y | type tracker without call steps with content splat position 0 | type_tracker.rb:39:5:39:12 | synthetic splat argument | -| type_tracker.rb:34:23:34:23 | y | type tracker without call steps with content splat position 0 | type_tracker.rb:44:5:44:13 | synthetic splat argument | -| type_tracker.rb:34:23:34:23 | y | type tracker without call steps with content splat position 0 | type_tracker.rb:51:5:51:13 | synthetic splat argument | +| type_tracker.rb:34:23:34:23 | y | type tracker without call steps with content element 0 | type_tracker.rb:39:5:39:12 | synthetic splat argument | +| type_tracker.rb:34:23:34:23 | y | type tracker without call steps with content element 0 | type_tracker.rb:44:5:44:13 | synthetic splat argument | +| type_tracker.rb:34:23:34:23 | y | type tracker without call steps with content element 0 | type_tracker.rb:51:5:51:13 | synthetic splat argument | | type_tracker.rb:34:26:34:26 | z | type tracker without call steps | type_tracker.rb:34:26:34:26 | z | | type_tracker.rb:34:26:34:26 | z | type tracker without call steps | type_tracker.rb:34:26:34:26 | z | -| type_tracker.rb:34:26:34:26 | z | type tracker without call steps with content splat position 0 | type_tracker.rb:52:5:52:13 | synthetic splat argument | +| type_tracker.rb:34:26:34:26 | z | type tracker without call steps with content element 0 | type_tracker.rb:52:5:52:13 | synthetic splat argument | | type_tracker.rb:35:5:35:7 | tmp | type tracker without call steps | type_tracker.rb:35:5:35:7 | tmp | | type_tracker.rb:35:11:35:15 | Array | type tracker without call steps | type_tracker.rb:35:11:35:15 | Array | | type_tracker.rb:35:11:35:15 | call to [] | type tracker without call steps | type_tracker.rb:35:11:35:15 | call to [] | @@ -189,7 +175,7 @@ track | type_tracker.rb:36:5:36:10 | ...[...] | type tracker without call steps | type_tracker.rb:36:5:36:10 | ...[...] | | type_tracker.rb:36:5:36:10 | synthetic splat argument | type tracker without call steps | type_tracker.rb:36:5:36:10 | synthetic splat argument | | type_tracker.rb:36:9:36:9 | 0 | type tracker without call steps | type_tracker.rb:36:9:36:9 | 0 | -| type_tracker.rb:36:9:36:9 | 0 | type tracker without call steps with content splat position 0 | type_tracker.rb:36:5:36:10 | synthetic splat argument | +| type_tracker.rb:36:9:36:9 | 0 | type tracker without call steps with content element 0 | type_tracker.rb:36:5:36:10 | synthetic splat argument | | type_tracker.rb:38:5:38:9 | array | type tracker without call steps | type_tracker.rb:38:5:38:9 | array | | type_tracker.rb:38:13:38:25 | Array | type tracker without call steps | type_tracker.rb:38:13:38:25 | Array | | type_tracker.rb:38:13:38:25 | call to [] | type tracker without call steps | type_tracker.rb:38:13:38:25 | call to [] | @@ -221,7 +207,7 @@ track | type_tracker.rb:40:5:40:12 | ...[...] | type tracker without call steps | type_tracker.rb:40:5:40:12 | ...[...] | | type_tracker.rb:40:5:40:12 | synthetic splat argument | type tracker without call steps | type_tracker.rb:40:5:40:12 | synthetic splat argument | | type_tracker.rb:40:11:40:11 | 0 | type tracker without call steps | type_tracker.rb:40:11:40:11 | 0 | -| type_tracker.rb:40:11:40:11 | 0 | type tracker without call steps with content splat position 0 | type_tracker.rb:40:5:40:12 | synthetic splat argument | +| type_tracker.rb:40:11:40:11 | 0 | type tracker without call steps with content element 0 | type_tracker.rb:40:5:40:12 | synthetic splat argument | | type_tracker.rb:42:5:42:10 | array2 | type tracker without call steps | type_tracker.rb:42:5:42:10 | array2 | | type_tracker.rb:42:14:42:26 | Array | type tracker without call steps | type_tracker.rb:42:14:42:26 | Array | | type_tracker.rb:42:14:42:26 | call to [] | type tracker without call steps | type_tracker.rb:42:14:42:26 | call to [] | @@ -263,7 +249,7 @@ track | type_tracker.rb:43:5:43:13 | call to []= | type tracker without call steps | type_tracker.rb:43:5:43:13 | call to []= | | type_tracker.rb:43:5:43:13 | synthetic splat argument | type tracker without call steps | type_tracker.rb:43:5:43:13 | synthetic splat argument | | type_tracker.rb:43:12:43:12 | 0 | type tracker without call steps | type_tracker.rb:43:12:43:12 | 0 | -| type_tracker.rb:43:12:43:12 | 0 | type tracker without call steps with content splat position 0 | type_tracker.rb:43:5:43:13 | synthetic splat argument | +| type_tracker.rb:43:12:43:12 | 0 | type tracker without call steps with content element 0 | type_tracker.rb:43:5:43:13 | synthetic splat argument | | type_tracker.rb:43:17:43:19 | __synth__0 | type tracker without call steps | type_tracker.rb:43:17:43:19 | __synth__0 | | type_tracker.rb:44:5:44:13 | ...[...] | type tracker without call steps | type_tracker.rb:44:5:44:13 | ...[...] | | type_tracker.rb:44:5:44:13 | synthetic splat argument | type tracker without call steps | type_tracker.rb:44:5:44:13 | synthetic splat argument | @@ -303,12 +289,12 @@ track | type_tracker.rb:47:5:47:13 | call to []= | type tracker without call steps | type_tracker.rb:47:5:47:13 | call to []= | | type_tracker.rb:47:5:47:13 | synthetic splat argument | type tracker without call steps | type_tracker.rb:47:5:47:13 | synthetic splat argument | | type_tracker.rb:47:12:47:12 | 0 | type tracker without call steps | type_tracker.rb:47:12:47:12 | 0 | -| type_tracker.rb:47:12:47:12 | 0 | type tracker without call steps with content splat position 0 | type_tracker.rb:47:5:47:13 | synthetic splat argument | +| type_tracker.rb:47:12:47:12 | 0 | type tracker without call steps with content element 0 | type_tracker.rb:47:5:47:13 | synthetic splat argument | | type_tracker.rb:47:17:47:19 | __synth__0 | type tracker without call steps | type_tracker.rb:47:17:47:19 | __synth__0 | | type_tracker.rb:48:5:48:13 | ...[...] | type tracker without call steps | type_tracker.rb:48:5:48:13 | ...[...] | | type_tracker.rb:48:5:48:13 | synthetic splat argument | type tracker without call steps | type_tracker.rb:48:5:48:13 | synthetic splat argument | | type_tracker.rb:48:12:48:12 | 1 | type tracker without call steps | type_tracker.rb:48:12:48:12 | 1 | -| type_tracker.rb:48:12:48:12 | 1 | type tracker without call steps with content splat position 0 | type_tracker.rb:48:5:48:13 | synthetic splat argument | +| type_tracker.rb:48:12:48:12 | 1 | type tracker without call steps with content element 0 | type_tracker.rb:48:5:48:13 | synthetic splat argument | | type_tracker.rb:50:5:50:10 | array4 | type tracker without call steps | type_tracker.rb:50:5:50:10 | array4 | | type_tracker.rb:50:14:50:26 | Array | type tracker without call steps | type_tracker.rb:50:14:50:26 | Array | | type_tracker.rb:50:14:50:26 | call to [] | type tracker without call steps | type_tracker.rb:50:14:50:26 | call to [] | @@ -419,7 +405,6 @@ trackEnd | type_tracker.rb:14:5:14:7 | [post] var | type_tracker.rb:14:5:14:7 | [post] var | | type_tracker.rb:14:5:14:7 | [post] var | type_tracker.rb:15:10:15:12 | var | | type_tracker.rb:14:5:14:13 | call to field= | type_tracker.rb:14:5:14:13 | call to field= | -| type_tracker.rb:14:5:14:13 | synthetic splat argument | type_tracker.rb:2:5:5:7 | synthetic splat parameter | | type_tracker.rb:14:5:14:13 | synthetic splat argument | type_tracker.rb:14:5:14:13 | synthetic splat argument | | type_tracker.rb:14:17:14:23 | "hello" | type_tracker.rb:2:16:2:18 | val | | type_tracker.rb:14:17:14:23 | "hello" | type_tracker.rb:2:16:2:18 | val | @@ -458,7 +443,6 @@ trackEnd | type_tracker.rb:20:5:20:11 | call to puts | type_tracker.rb:23:1:23:16 | call to positional | | type_tracker.rb:20:5:20:11 | synthetic splat argument | type_tracker.rb:20:5:20:11 | synthetic splat argument | | type_tracker.rb:23:1:23:16 | call to positional | type_tracker.rb:23:1:23:16 | call to positional | -| type_tracker.rb:23:1:23:16 | synthetic splat argument | type_tracker.rb:18:1:21:3 | synthetic splat parameter | | type_tracker.rb:23:1:23:16 | synthetic splat argument | type_tracker.rb:23:1:23:16 | synthetic splat argument | | type_tracker.rb:23:12:23:12 | 1 | type_tracker.rb:18:16:18:17 | p1 | | type_tracker.rb:23:12:23:12 | 1 | type_tracker.rb:18:16:18:17 | p1 | @@ -491,7 +475,6 @@ trackEnd | type_tracker.rb:27:5:27:11 | call to puts | type_tracker.rb:32:1:32:27 | call to keyword | | type_tracker.rb:27:5:27:11 | synthetic splat argument | type_tracker.rb:27:5:27:11 | synthetic splat argument | | type_tracker.rb:30:1:30:21 | call to keyword | type_tracker.rb:30:1:30:21 | call to keyword | -| type_tracker.rb:30:1:30:21 | synthetic hash-splat argument | type_tracker.rb:25:1:28:3 | synthetic hash-splat parameter | | type_tracker.rb:30:1:30:21 | synthetic hash-splat argument | type_tracker.rb:30:1:30:21 | synthetic hash-splat argument | | type_tracker.rb:30:9:30:10 | :p1 | type_tracker.rb:30:9:30:10 | :p1 | | type_tracker.rb:30:9:30:13 | Pair | type_tracker.rb:30:9:30:13 | Pair | @@ -506,7 +489,6 @@ trackEnd | type_tracker.rb:30:20:30:20 | 4 | type_tracker.rb:27:10:27:11 | p2 | | type_tracker.rb:30:20:30:20 | 4 | type_tracker.rb:30:20:30:20 | 4 | | type_tracker.rb:31:1:31:21 | call to keyword | type_tracker.rb:31:1:31:21 | call to keyword | -| type_tracker.rb:31:1:31:21 | synthetic hash-splat argument | type_tracker.rb:25:1:28:3 | synthetic hash-splat parameter | | type_tracker.rb:31:1:31:21 | synthetic hash-splat argument | type_tracker.rb:31:1:31:21 | synthetic hash-splat argument | | type_tracker.rb:31:9:31:10 | :p2 | type_tracker.rb:31:9:31:10 | :p2 | | type_tracker.rb:31:9:31:13 | Pair | type_tracker.rb:31:9:31:13 | Pair | @@ -521,7 +503,6 @@ trackEnd | type_tracker.rb:31:20:31:20 | 6 | type_tracker.rb:26:10:26:11 | p1 | | type_tracker.rb:31:20:31:20 | 6 | type_tracker.rb:31:20:31:20 | 6 | | type_tracker.rb:32:1:32:27 | call to keyword | type_tracker.rb:32:1:32:27 | call to keyword | -| type_tracker.rb:32:1:32:27 | synthetic hash-splat argument | type_tracker.rb:25:1:28:3 | synthetic hash-splat parameter | | type_tracker.rb:32:1:32:27 | synthetic hash-splat argument | type_tracker.rb:32:1:32:27 | synthetic hash-splat argument | | type_tracker.rb:32:9:32:11 | :p2 | type_tracker.rb:32:9:32:11 | :p2 | | type_tracker.rb:32:9:32:16 | Pair | type_tracker.rb:32:9:32:16 | Pair | diff --git a/ruby/ql/test/library-tests/frameworks/action_controller/params-flow.expected b/ruby/ql/test/library-tests/frameworks/action_controller/params-flow.expected index 77c97b234d9..f443f766986 100644 --- a/ruby/ql/test/library-tests/frameworks/action_controller/params-flow.expected +++ b/ruby/ql/test/library-tests/frameworks/action_controller/params-flow.expected @@ -67,21 +67,21 @@ edges | params_flow.rb:107:10:107:33 | call to values_at [element 0] | params_flow.rb:107:10:107:33 | call to values_at | provenance | | | params_flow.rb:107:10:107:33 | call to values_at [element 1] | params_flow.rb:107:10:107:33 | call to values_at | provenance | | | params_flow.rb:111:10:111:15 | call to params | params_flow.rb:111:10:111:29 | call to merge | provenance | | -| params_flow.rb:112:10:112:29 | call to merge [splat position 0] | params_flow.rb:112:10:112:29 | call to merge | provenance | | +| params_flow.rb:112:10:112:29 | call to merge [element 0] | params_flow.rb:112:10:112:29 | call to merge | provenance | | | params_flow.rb:112:23:112:28 | call to params | params_flow.rb:112:10:112:29 | call to merge | provenance | | -| params_flow.rb:112:23:112:28 | call to params | params_flow.rb:112:10:112:29 | call to merge [splat position 0] | provenance | | +| params_flow.rb:112:23:112:28 | call to params | params_flow.rb:112:10:112:29 | call to merge [element 0] | provenance | | | params_flow.rb:116:10:116:15 | call to params | params_flow.rb:116:10:116:37 | call to reverse_merge | provenance | | | params_flow.rb:117:31:117:36 | call to params | params_flow.rb:117:10:117:37 | call to reverse_merge | provenance | | | params_flow.rb:121:10:121:15 | call to params | params_flow.rb:121:10:121:43 | call to with_defaults | provenance | | | params_flow.rb:122:31:122:36 | call to params | params_flow.rb:122:10:122:37 | call to with_defaults | provenance | | | params_flow.rb:126:10:126:15 | call to params | params_flow.rb:126:10:126:30 | call to merge! | provenance | | -| params_flow.rb:127:10:127:30 | call to merge! [splat position 0] | params_flow.rb:127:10:127:30 | call to merge! | provenance | | +| params_flow.rb:127:10:127:30 | call to merge! [element 0] | params_flow.rb:127:10:127:30 | call to merge! | provenance | | | params_flow.rb:127:24:127:29 | call to params | params_flow.rb:127:10:127:30 | call to merge! | provenance | | -| params_flow.rb:127:24:127:29 | call to params | params_flow.rb:127:10:127:30 | call to merge! [splat position 0] | provenance | | +| params_flow.rb:127:24:127:29 | call to params | params_flow.rb:127:10:127:30 | call to merge! [element 0] | provenance | | | params_flow.rb:130:5:130:5 | [post] p | params_flow.rb:131:10:131:10 | p | provenance | | -| params_flow.rb:130:5:130:5 | [post] p [splat position 0] | params_flow.rb:131:10:131:10 | p | provenance | | +| params_flow.rb:130:5:130:5 | [post] p [element 0] | params_flow.rb:131:10:131:10 | p | provenance | | | params_flow.rb:130:14:130:19 | call to params | params_flow.rb:130:5:130:5 | [post] p | provenance | | -| params_flow.rb:130:14:130:19 | call to params | params_flow.rb:130:5:130:5 | [post] p [splat position 0] | provenance | | +| params_flow.rb:130:14:130:19 | call to params | params_flow.rb:130:5:130:5 | [post] p [element 0] | provenance | | | params_flow.rb:135:10:135:15 | call to params | params_flow.rb:135:10:135:38 | call to reverse_merge! | provenance | | | params_flow.rb:136:32:136:37 | call to params | params_flow.rb:136:10:136:38 | call to reverse_merge! | provenance | | | params_flow.rb:139:5:139:5 | [post] p | params_flow.rb:140:10:140:10 | p | provenance | | @@ -213,7 +213,7 @@ nodes | params_flow.rb:111:10:111:15 | call to params | semmle.label | call to params | | params_flow.rb:111:10:111:29 | call to merge | semmle.label | call to merge | | params_flow.rb:112:10:112:29 | call to merge | semmle.label | call to merge | -| params_flow.rb:112:10:112:29 | call to merge [splat position 0] | semmle.label | call to merge [splat position 0] | +| params_flow.rb:112:10:112:29 | call to merge [element 0] | semmle.label | call to merge [element 0] | | params_flow.rb:112:23:112:28 | call to params | semmle.label | call to params | | params_flow.rb:116:10:116:15 | call to params | semmle.label | call to params | | params_flow.rb:116:10:116:37 | call to reverse_merge | semmle.label | call to reverse_merge | @@ -226,10 +226,10 @@ nodes | params_flow.rb:126:10:126:15 | call to params | semmle.label | call to params | | params_flow.rb:126:10:126:30 | call to merge! | semmle.label | call to merge! | | params_flow.rb:127:10:127:30 | call to merge! | semmle.label | call to merge! | -| params_flow.rb:127:10:127:30 | call to merge! [splat position 0] | semmle.label | call to merge! [splat position 0] | +| params_flow.rb:127:10:127:30 | call to merge! [element 0] | semmle.label | call to merge! [element 0] | | params_flow.rb:127:24:127:29 | call to params | semmle.label | call to params | | params_flow.rb:130:5:130:5 | [post] p | semmle.label | [post] p | -| params_flow.rb:130:5:130:5 | [post] p [splat position 0] | semmle.label | [post] p [splat position 0] | +| params_flow.rb:130:5:130:5 | [post] p [element 0] | semmle.label | [post] p [element 0] | | params_flow.rb:130:14:130:19 | call to params | semmle.label | call to params | | params_flow.rb:131:10:131:10 | p | semmle.label | p | | params_flow.rb:135:10:135:15 | call to params | semmle.label | call to params | 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/shared/controlflow/CHANGELOG.md b/shared/controlflow/CHANGELOG.md index f62d99b8a59..38127a99b3f 100644 --- a/shared/controlflow/CHANGELOG.md +++ b/shared/controlflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.6 + +No user-facing changes. + ## 1.0.5 No user-facing changes. diff --git a/shared/controlflow/change-notes/released/1.0.6.md b/shared/controlflow/change-notes/released/1.0.6.md new file mode 100644 index 00000000000..e5e80a3b3f1 --- /dev/null +++ b/shared/controlflow/change-notes/released/1.0.6.md @@ -0,0 +1,3 @@ +## 1.0.6 + +No user-facing changes. diff --git a/shared/controlflow/codeql-pack.release.yml b/shared/controlflow/codeql-pack.release.yml index 42da17b3841..8033d980afa 100644 --- a/shared/controlflow/codeql-pack.release.yml +++ b/shared/controlflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.5 +lastReleaseVersion: 1.0.6 diff --git a/shared/controlflow/qlpack.yml b/shared/controlflow/qlpack.yml index b610d434e33..5bfb02b0179 100644 --- a/shared/controlflow/qlpack.yml +++ b/shared/controlflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/controlflow -version: 1.0.6-dev +version: 1.0.7-dev groups: shared library: true dependencies: diff --git a/shared/dataflow/CHANGELOG.md b/shared/dataflow/CHANGELOG.md index 0a94e1b80ec..84b64cbc6ea 100644 --- a/shared/dataflow/CHANGELOG.md +++ b/shared/dataflow/CHANGELOG.md @@ -1,3 +1,9 @@ +## 1.1.0 + +### Deprecated APIs + +* The source/sink grouping feature of the data flow library has been removed. It was introduced primarily for debugging, but has not proven useful. + ## 1.0.5 No user-facing changes. diff --git a/shared/dataflow/change-notes/2024-08-20-remove-srcsink-grouping.md b/shared/dataflow/change-notes/released/1.1.0.md similarity index 82% rename from shared/dataflow/change-notes/2024-08-20-remove-srcsink-grouping.md rename to shared/dataflow/change-notes/released/1.1.0.md index ba3e86b720f..44897538158 100644 --- a/shared/dataflow/change-notes/2024-08-20-remove-srcsink-grouping.md +++ b/shared/dataflow/change-notes/released/1.1.0.md @@ -1,4 +1,5 @@ ---- -category: deprecated ---- +## 1.1.0 + +### Deprecated APIs + * 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/shared/dataflow/codeql-pack.release.yml b/shared/dataflow/codeql-pack.release.yml index 42da17b3841..2ac15439f56 100644 --- a/shared/dataflow/codeql-pack.release.yml +++ b/shared/dataflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.5 +lastReleaseVersion: 1.1.0 diff --git a/shared/dataflow/codeql/dataflow/DataFlow.qll b/shared/dataflow/codeql/dataflow/DataFlow.qll index 7841c72811b..6e4921521b1 100644 --- a/shared/dataflow/codeql/dataflow/DataFlow.qll +++ b/shared/dataflow/codeql/dataflow/DataFlow.qll @@ -298,7 +298,7 @@ signature module InputSig { /** Extra data-flow steps needed for lambda flow analysis. */ predicate additionalLambdaFlowStep(Node nodeFrom, Node nodeTo, boolean preservesValue); - predicate knownSourceModel(Node sink, string model); + predicate knownSourceModel(Node source, string model); predicate knownSinkModel(Node sink, string model); diff --git a/shared/dataflow/codeql/dataflow/internal/ContentDataFlowImpl.qll b/shared/dataflow/codeql/dataflow/internal/ContentDataFlowImpl.qll new file mode 100644 index 00000000000..f413c6dd7ad --- /dev/null +++ b/shared/dataflow/codeql/dataflow/internal/ContentDataFlowImpl.qll @@ -0,0 +1,516 @@ +/** + * Provides classes for performing global (inter-procedural) + * content-sensitive data flow analyses. + * + * Unlike `DataFlow::Global`, we allow for data to be stored (possibly nested) inside + * contents of sources and sinks. + * We track flow paths of the form + * + * ``` + * source --value-->* node + * (--read--> node --value-->* node)* + * --(non-value|value)-->* node + * (--store--> node --value-->* node)* + * --value-->* sink + * ``` + * + * where `--value-->` is a value-preserving flow step, `--read-->` is a read + * step, `--store-->` is a store step, and `--(non-value)-->` is a + * non-value-preserving flow step. + * + * That is, first a sequence of 0 or more reads, followed by 0 or more additional + * steps, followed by 0 or more stores, with value-preserving steps allowed in + * between all other steps. + */ + +private import codeql.dataflow.DataFlow +private import codeql.util.Boolean +private import codeql.util.Location + +module MakeImplContentDataFlow Lang> { + private import Lang + private import DataFlowMake + private import DataFlowImplCommon::MakeImplCommon + + /** + * An input configuration for content data flow. + */ + signature module ConfigSig { + /** + * Holds if `source` is a relevant data flow source. + */ + predicate isSource(Node source); + + /** + * Holds if `sink` is a relevant data flow sink. + */ + predicate isSink(Node sink); + + /** + * Holds if data may flow from `node1` to `node2` in addition to the normal data-flow steps. + */ + default predicate isAdditionalFlowStep(Node node1, Node node2) { none() } + + /** Holds if data flow into `node` is prohibited. */ + default predicate isBarrier(Node node) { none() } + + /** + * Gets a data flow configuration feature to add restrictions to the set of + * valid flow paths. + * + * - `FeatureHasSourceCallContext`: + * Assume that sources have some existing call context to disallow + * conflicting return-flow directly following the source. + * - `FeatureHasSinkCallContext`: + * Assume that sinks have some existing call context to disallow + * conflicting argument-to-parameter flow directly preceding the sink. + * - `FeatureEqualSourceSinkCallContext`: + * Implies both of the above and additionally ensures that the entire flow + * path preserves the call context. + */ + default FlowFeature getAFeature() { none() } + + /** Gets a limit on the number of reads out of sources and number of stores into sinks. */ + default int accessPathLimit() { result = Lang::accessPathLimit() } + + /** Holds if `c` is relevant for reads out of sources or stores into sinks. */ + default predicate isRelevantContent(ContentSet c) { any() } + } + + /** + * Constructs a global content data flow computation. + */ + module Global { + private module FlowConfig implements StateConfigSig { + class FlowState = State; + + predicate isSource(Node source, FlowState state) { + ContentConfig::isSource(source) and + state.(InitState).decode(true) + } + + predicate isSink(Node sink, FlowState state) { + ContentConfig::isSink(sink) and + ( + state instanceof InitState or + state instanceof StoreState or + state instanceof ReadState + ) + } + + predicate isAdditionalFlowStep(Node node1, FlowState state1, Node node2, FlowState state2) { + storeStep(node1, state1, _, node2, state2) or + readStep(node1, state1, _, node2, state2) or + additionalStep(node1, state1, node2, state2) + } + + predicate isBarrier = ContentConfig::isBarrier/1; + + FlowFeature getAFeature() { result = ContentConfig::getAFeature() } + + predicate accessPathLimit = ContentConfig::accessPathLimit/0; + + // needed to record reads/stores inside summarized callables + predicate includeHiddenNodes() { any() } + } + + private module Flow = GlobalWithState; + + /** + * Holds if data stored inside `sourceAp` on `source` flows to `sinkAp` inside `sink` + * for this configuration. `preservesValue` indicates whether any of the additional + * flow steps defined by `isAdditionalFlowStep` are needed. + * + * For the source access path, `sourceAp`, the top of the stack represents the content + * that was last read from. That is, if `sourceAp` is `Field1.Field2` (with `Field1` + * being the top of the stack), then there is flow from `source.Field2.Field1`. + * + * For the sink access path, `sinkAp`, the top of the stack represents the content + * that was last stored into. That is, if `sinkAp` is `Field1.Field2` (with `Field1` + * being the top of the stack), then there is flow into `sink.Field1.Field2`. + */ + predicate flow( + Node source, AccessPath sourceAp, Node sink, AccessPath sinkAp, boolean preservesValue + ) { + exists(Flow::PathNode pathSource, Flow::PathNode pathSink | + Flow::flowPath(pathSource, pathSink) and + nodeReaches(pathSource, TAccessPathNil(), TAccessPathNil(), pathSink, sourceAp, sinkAp) and + source = pathSource.getNode() and + sink = pathSink.getNode() + | + pathSink.getState().(InitState).decode(preservesValue) + or + pathSink.getState().(ReadState).decode(_, preservesValue) + or + pathSink.getState().(StoreState).decode(_, preservesValue) + ) + } + + private newtype TState = + TInitState(Boolean preservesValue) or + TStoreState(int size, Boolean preservesValue) { + size in [1 .. ContentConfig::accessPathLimit()] + } or + TReadState(int size, Boolean preservesValue) { + size in [1 .. ContentConfig::accessPathLimit()] + } + + abstract private class State extends TState { + abstract string toString(); + } + + /** A flow state representing no reads or stores. */ + private class InitState extends State, TInitState { + private boolean preservesValue_; + + InitState() { this = TInitState(preservesValue_) } + + override string toString() { result = "Init(" + preservesValue_ + ")" } + + predicate decode(boolean preservesValue) { preservesValue = preservesValue_ } + } + + /** A flow state representing that content has been stored into. */ + private class StoreState extends State, TStoreState { + private boolean preservesValue_; + private int size_; + + StoreState() { this = TStoreState(size_, preservesValue_) } + + override string toString() { result = "StoreState(" + size_ + "," + preservesValue_ + ")" } + + predicate decode(int size, boolean preservesValue) { + size = size_ and preservesValue = preservesValue_ + } + } + + /** A flow state representing that content has been read from. */ + private class ReadState extends State, TReadState { + private boolean preservesValue_; + private int size_; + + ReadState() { this = TReadState(size_, preservesValue_) } + + override string toString() { result = "ReadState(" + size_ + "," + preservesValue_ + ")" } + + predicate decode(int size, boolean preservesValue) { + size = size_ and preservesValue = preservesValue_ + } + } + + private predicate storeStep( + Node node1, State state1, ContentSet c, Node node2, StoreState state2 + ) { + exists(boolean preservesValue, int size | + storeSet(node1, c, node2, _, _) and + ContentConfig::isRelevantContent(c) and + state2.decode(size + 1, preservesValue) + | + state1.(InitState).decode(preservesValue) and size = 0 + or + state1.(ReadState).decode(_, preservesValue) and size = 0 + or + state1.(StoreState).decode(size, preservesValue) + ) + } + + private predicate readStep(Node node1, State state1, ContentSet c, Node node2, ReadState state2) { + exists(int size | + readSet(node1, c, node2) and + ContentConfig::isRelevantContent(c) and + state2.decode(size + 1, true) + | + state1.(InitState).decode(true) and + size = 0 + or + state1.(ReadState).decode(size, true) + ) + } + + private predicate additionalStep(Node node1, State state1, Node node2, State state2) { + ContentConfig::isAdditionalFlowStep(node1, node2) and + ( + state1 instanceof InitState and + state2.(InitState).decode(false) + or + exists(int size | + state1.(ReadState).decode(size, _) and + state2.(ReadState).decode(size, false) + ) + ) + } + + private newtype TAccessPath = + TAccessPathNil() or + TAccessPathCons(ContentSet head, AccessPath tail) { + nodeReachesStore(_, _, _, _, head, _, tail) + or + nodeReachesRead(_, _, _, _, head, tail, _) + } + + /** An access path. */ + class AccessPath extends TAccessPath { + /** Gets the head of this access path, if any. */ + ContentSet getHead() { this = TAccessPathCons(result, _) } + + /** Gets the tail of this access path, if any. */ + AccessPath getTail() { this = TAccessPathCons(_, result) } + + /** + * Gets a textual representation of this access path. + * + * Elements are dot-separated, and the head of the stack is + * rendered first. + */ + string toString() { + this = TAccessPathNil() and + result = "" + or + exists(ContentSet head, AccessPath tail | + this = TAccessPathCons(head, tail) and + result = head + "." + tail + ) + } + } + + /** + * Provides a big-step flow relation, where flow stops at read/store steps that + * must be recorded, and flow via `subpaths` such that reads/stores inside + * summarized callables can be recorded as well. + */ + private module BigStepFlow { + private predicate reachesSink(Flow::PathNode node) { + FlowConfig::isSink(node.getNode(), node.getState()) + or + reachesSink(node.getASuccessor()) + } + + /** + * Holds if the flow step `pred -> succ` should not be allowed to be included + * in the big-step relation. + */ + pragma[nomagic] + private predicate excludeStep(Flow::PathNode pred, Flow::PathNode succ) { + pred.getASuccessor() = succ and + ( + // we need to record reads/stores inside summarized callables + Flow::PathGraph::subpaths(pred, _, _, succ) + or + // only allow flow into a summarized callable, as part of the big-step + // relation, when flow can reach a sink without going back out + Flow::PathGraph::subpaths(pred, succ, _, _) and + not reachesSink(succ) + ) + or + exists(Node predNode, State predState, Node succNode, State succState | + succNodeAndState(pred, predNode, predState, succ, succNode, succState) + | + // needed to record store steps + storeStep(predNode, predState, _, succNode, succState) + or + // needed to record read steps + readStep(predNode, predState, _, succNode, succState) + ) + } + + pragma[nomagic] + private DataFlowCallable getEnclosingCallableImpl(Flow::PathNode node) { + result = getNodeEnclosingCallable(node.getNode()) + } + + pragma[inline] + private DataFlowCallable getEnclosingCallable(Flow::PathNode node) { + pragma[only_bind_into](result) = getEnclosingCallableImpl(pragma[only_bind_out](node)) + } + + pragma[nomagic] + private predicate bigStepEntry(Flow::PathNode node) { + ( + FlowConfig::isSource(node.getNode(), node.getState()) + or + excludeStep(_, node) + or + Flow::PathGraph::subpaths(_, node, _, _) + ) + } + + pragma[nomagic] + private predicate bigStepExit(Flow::PathNode node) { + ( + bigStepEntry(node) + or + FlowConfig::isSink(node.getNode(), node.getState()) + or + excludeStep(node, _) + or + Flow::PathGraph::subpaths(_, _, node, _) + ) + } + + pragma[nomagic] + private predicate step(Flow::PathNode pred, Flow::PathNode succ) { + pred.getASuccessor() = succ and + not excludeStep(pred, succ) + } + + pragma[nomagic] + private predicate stepRec(Flow::PathNode pred, Flow::PathNode succ) { + step(pred, succ) and + not bigStepEntry(pred) + } + + private predicate stepRecPlus(Flow::PathNode n1, Flow::PathNode n2) = + fastTC(stepRec/2)(n1, n2) + + /** + * Holds if there is flow `pathSucc+(pred) = succ`, and such a flow path does + * not go through any reads/stores that need to be recorded, or summarized + * steps. + */ + pragma[nomagic] + private predicate bigStep(Flow::PathNode pred, Flow::PathNode succ) { + exists(Flow::PathNode mid | + bigStepEntry(pred) and + step(pred, mid) + | + succ = mid + or + stepRecPlus(mid, succ) + ) and + bigStepExit(succ) + } + + pragma[nomagic] + predicate bigStepNotLocal(Flow::PathNode pred, Flow::PathNode succ) { + bigStep(pred, succ) and + not getEnclosingCallable(pred) = getEnclosingCallable(succ) + } + + pragma[nomagic] + predicate bigStepMaybeLocal(Flow::PathNode pred, Flow::PathNode succ) { + bigStep(pred, succ) and + getEnclosingCallable(pred) = getEnclosingCallable(succ) + } + } + + /** + * Holds if `source` can reach `node`, having read `reads` from the source and + * written `stores` into `node`. + * + * `source` is either a source from a configuration, in which case `scReads` and + * `scStores` are always empty, or it is the parameter of a summarized callable, + * in which case `scReads` and `scStores` record the reads/stores for a summary + * context, that is, the reads/stores for an argument that can reach the parameter. + */ + pragma[nomagic] + private predicate nodeReaches( + Flow::PathNode source, AccessPath scReads, AccessPath scStores, Flow::PathNode node, + AccessPath reads, AccessPath stores + ) { + node = source and + reads = scReads and + stores = scStores and + ( + Flow::flowPath(source, _) and + scReads = TAccessPathNil() and + scStores = TAccessPathNil() + or + // the argument in a sub path can be reached, so we start flow from the sub path + // parameter, while recording the read/store summary context + exists(Flow::PathNode arg | + nodeReachesSubpathArg(_, _, _, arg, scReads, scStores) and + Flow::PathGraph::subpaths(arg, source, _, _) + ) + ) + or + exists(Flow::PathNode mid | + nodeReaches(source, scReads, scStores, mid, reads, stores) and + BigStepFlow::bigStepMaybeLocal(mid, node) + ) + or + exists(Flow::PathNode mid | + nodeReaches(source, scReads, scStores, mid, reads, stores) and + BigStepFlow::bigStepNotLocal(mid, node) and + // when flow is not local, we cannot flow back out, so we may stop + // flow early when computing summary flow + Flow::flowPath(source, _) and + scReads = TAccessPathNil() and + scStores = TAccessPathNil() + ) + or + // store step + exists(AccessPath storesMid, ContentSet c | + nodeReachesStore(source, scReads, scStores, node, c, reads, storesMid) and + stores = TAccessPathCons(c, storesMid) + ) + or + // read step + exists(AccessPath readsMid, ContentSet c | + nodeReachesRead(source, scReads, scStores, node, c, readsMid, stores) and + reads = TAccessPathCons(c, readsMid) + ) + or + // flow-through step; match outer stores/reads with inner store/read summary contexts + exists(Flow::PathNode mid, AccessPath innerScReads, AccessPath innerScStores | + nodeReachesSubpathArg(source, scReads, scStores, mid, innerScReads, innerScStores) and + subpathArgReachesOut(mid, innerScReads, innerScStores, node, reads, stores) + ) + } + + pragma[nomagic] + private predicate succNodeAndState( + Flow::PathNode pre, Node preNode, State preState, Flow::PathNode succ, Node succNode, + State succState + ) { + pre.getNode() = preNode and + pre.getState() = preState and + succ.getNode() = succNode and + succ.getState() = succState and + pre.getASuccessor() = succ + } + + pragma[nomagic] + private predicate nodeReachesStore( + Flow::PathNode source, AccessPath scReads, AccessPath scStores, Flow::PathNode target, + ContentSet c, AccessPath reads, AccessPath stores + ) { + exists(Flow::PathNode mid, State midState, Node midNode, State targetState, Node targetNode | + nodeReaches(source, scReads, scStores, mid, reads, stores) and + succNodeAndState(mid, midNode, midState, target, targetNode, targetState) and + storeStep(midNode, midState, c, targetNode, targetState) + ) + } + + pragma[nomagic] + private predicate nodeReachesRead( + Flow::PathNode source, AccessPath scReads, AccessPath scStores, Flow::PathNode target, + ContentSet c, AccessPath reads, AccessPath stores + ) { + exists(Flow::PathNode mid, State midState, Node midNode, State targetState, Node targetNode | + nodeReaches(source, scReads, scStores, mid, reads, stores) and + succNodeAndState(mid, midNode, midState, target, targetNode, targetState) and + readStep(midNode, midState, c, targetNode, targetState) + ) + } + + pragma[nomagic] + private predicate nodeReachesSubpathArg( + Flow::PathNode source, AccessPath scReads, AccessPath scStores, Flow::PathNode arg, + AccessPath reads, AccessPath stores + ) { + nodeReaches(source, scReads, scStores, arg, reads, stores) and + Flow::PathGraph::subpaths(arg, _, _, _) + } + + pragma[nomagic] + private predicate subpathArgReachesOut( + Flow::PathNode arg, AccessPath scReads, AccessPath scStores, Flow::PathNode out, + AccessPath reads, AccessPath stores + ) { + exists(Flow::PathNode source, Flow::PathNode ret | + nodeReaches(source, scReads, scStores, ret, reads, stores) and + Flow::PathGraph::subpaths(arg, source, ret, out) + ) + } + } +} diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll index 6425574581e..c8b56db0b34 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImpl.qll @@ -173,6 +173,11 @@ module MakeImpl Lang> { Node asNode() { this = TNodeNormal(result) } + /** Gets the corresponding Node if this is a normal node or its post-implicit read node. */ + Node asNodeOrImplicitRead() { + this = TNodeNormal(result) or this = TNodeImplicitRead(result, true) + } + predicate isImplicitReadNode(Node n, boolean hasRead) { this = TNodeImplicitRead(n, hasRead) } ParameterNode asParamReturnNode() { this = TParamReturnNode(result, _) } @@ -260,7 +265,7 @@ module MakeImpl Lang> { private predicate outBarrier(NodeEx node) { exists(Node n | - node.asNode() = n and + node.asNodeOrImplicitRead() = n and Config::isBarrierOut(n) | Config::isSink(n, _) @@ -272,7 +277,7 @@ module MakeImpl Lang> { pragma[nomagic] private predicate outBarrier(NodeEx node, FlowState state) { exists(Node n | - node.asNode() = n and + node.asNodeOrImplicitRead() = n and Config::isBarrierOut(n, state) | Config::isSink(n, state) @@ -318,7 +323,7 @@ module MakeImpl Lang> { pragma[nomagic] private predicate sinkNodeWithState(NodeEx node, FlowState state) { - Config::isSink(node.asNode(), state) and + Config::isSink(node.asNodeOrImplicitRead(), state) and not fullBarrier(node) and not stateBarrier(node, state) } @@ -380,26 +385,19 @@ module MakeImpl Lang> { */ private predicate additionalLocalFlowStep(NodeEx node1, NodeEx node2, string model) { exists(Node n1, Node n2 | - node1.asNode() = n1 and + node1.asNodeOrImplicitRead() = n1 and node2.asNode() = n2 and Config::isAdditionalFlowStep(pragma[only_bind_into](n1), pragma[only_bind_into](n2), model) and getNodeEnclosingCallable(n1) = getNodeEnclosingCallable(n2) and stepFilter(node1, node2) ) - or - exists(Node n | - node1.isImplicitReadNode(n, true) and - node2.asNode() = n and - not fullBarrier(node2) and - model = "" - ) } private predicate additionalLocalStateStep( NodeEx node1, FlowState s1, NodeEx node2, FlowState s2 ) { exists(Node n1, Node n2 | - node1.asNode() = n1 and + node1.asNodeOrImplicitRead() = n1 and node2.asNode() = n2 and Config::isAdditionalFlowStep(pragma[only_bind_into](n1), s1, pragma[only_bind_into](n2), s2) and getNodeEnclosingCallable(n1) = getNodeEnclosingCallable(n2) and @@ -425,7 +423,7 @@ module MakeImpl Lang> { */ private predicate additionalJumpStep(NodeEx node1, NodeEx node2, string model) { exists(Node n1, Node n2 | - node1.asNode() = n1 and + node1.asNodeOrImplicitRead() = n1 and node2.asNode() = n2 and Config::isAdditionalFlowStep(pragma[only_bind_into](n1), pragma[only_bind_into](n2), model) and getNodeEnclosingCallable(n1) != getNodeEnclosingCallable(n2) and @@ -436,7 +434,7 @@ module MakeImpl Lang> { private predicate additionalJumpStateStep(NodeEx node1, FlowState s1, NodeEx node2, FlowState s2) { exists(Node n1, Node n2 | - node1.asNode() = n1 and + node1.asNodeOrImplicitRead() = n1 and node2.asNode() = n2 and Config::isAdditionalFlowStep(pragma[only_bind_into](n1), s1, pragma[only_bind_into](n2), s2) and getNodeEnclosingCallable(n1) != getNodeEnclosingCallable(n2) and @@ -547,6 +545,8 @@ module MakeImpl Lang> { private module Stage1 implements StageSig { class Ap = Unit; + class ApNil = Ap; + private class Cc = boolean; /* Begin: Stage 1 logic. */ @@ -729,7 +729,7 @@ module MakeImpl Lang> { additional predicate sinkNode(NodeEx node, FlowState state) { fwdFlow(node) and fwdFlowState(state) and - Config::isSink(node.asNode()) + Config::isSink(node.asNodeOrImplicitRead()) or fwdFlow(node) and fwdFlowState(state) and @@ -1052,7 +1052,7 @@ module MakeImpl Lang> { private predicate sinkModel(NodeEx node, string model) { sinkNode(node, _) and - exists(Node n | n = node.asNode() | + exists(Node n | n = node.asNodeOrImplicitRead() | knownSinkModel(n, model) or not knownSinkModel(n, _) and model = "" @@ -1068,16 +1068,40 @@ module MakeImpl Lang> { if label1 = "" then result = label2 else result = label1 } - pragma[noinline] - private predicate localFlowStepNodeCand1(NodeEx node1, NodeEx node2, string model) { + pragma[nomagic] + private predicate localStepNodeCand1( + NodeEx node1, NodeEx node2, boolean preservesValue, DataFlowType t, LocalCallContext lcc, + string label + ) { + Stage1::revFlow(node1) and Stage1::revFlow(node2) and - localFlowStepEx(node1, node2, model) + ( + preservesValue = true and + localFlowStepEx(node1, node2, label) and + t = node1.getDataFlowType() + or + preservesValue = false and + additionalLocalFlowStep(node1, node2, label) and + t = node2.getDataFlowType() + ) and + lcc.relevantFor(node1.getEnclosingCallable()) and + not isUnreachableInCall1(node1, lcc) and + not isUnreachableInCall1(node2, lcc) } - pragma[noinline] - private predicate additionalLocalFlowStepNodeCand1(NodeEx node1, NodeEx node2, string model) { + pragma[nomagic] + private predicate localStateStepNodeCand1( + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, DataFlowType t, + LocalCallContext lcc, string label + ) { + Stage1::revFlow(node1) and Stage1::revFlow(node2) and - additionalLocalFlowStep(node1, node2, model) + additionalLocalStateStep(node1, state1, node2, state2) and + label = "Config" and + t = node2.getDataFlowType() and + lcc.relevantFor(node1.getEnclosingCallable()) and + not isUnreachableInCall1(node1, lcc) and + not isUnreachableInCall1(node2, lcc) } pragma[nomagic] @@ -1275,6 +1299,8 @@ module MakeImpl Lang> { private signature module StageSig { class Ap; + class ApNil extends Ap; + predicate revFlow(NodeEx node); predicate revFlowAp(NodeEx node, Ap ap); @@ -1406,6 +1432,9 @@ module MakeImpl Lang> { bindingset[node, state, t0, ap] predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t); + bindingset[node, ap, isStoreStep] + predicate stepFilter(NodeEx node, Ap ap, boolean isStoreStep); + bindingset[typ, contentType] predicate typecheckStore(Typ typ, DataFlowType contentType); @@ -1416,10 +1445,6 @@ module MakeImpl Lang> { import Param /* Begin: Stage logic. */ - private module TypOption = Option; - - private class TypOption = TypOption::Option; - pragma[nomagic] private Typ getNodeTyp(NodeEx node) { PrevStage::revFlow(node) and result = getTyp(node.getDataFlowType()) @@ -1467,22 +1492,21 @@ module MakeImpl Lang> { * Holds if `node` is reachable with access path `ap` from a source. * * The call context `cc` records whether the node is reached through an - * argument in a call, and if so, `summaryCtx` and `argAp` record the - * corresponding parameter position and access path of that argument, respectively. + * argument in a call, and if so, `summaryCtx` records the + * corresponding parameter position and access path of that argument. */ pragma[nomagic] additional predicate fwdFlow( - NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t, Ap ap, ApApprox apa + NodeEx node, FlowState state, Cc cc, SummaryCtx summaryCtx, Typ t, Ap ap, ApApprox apa ) { - fwdFlow1(node, state, cc, summaryCtx, argT, argAp, _, t, ap, apa) + fwdFlow1(node, state, cc, summaryCtx, _, t, ap, apa) } private predicate fwdFlow1( - NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t0, Typ t, Ap ap, ApApprox apa + NodeEx node, FlowState state, Cc cc, SummaryCtx summaryCtx, Typ t0, Typ t, Ap ap, + ApApprox apa ) { - fwdFlow0(node, state, cc, summaryCtx, argT, argAp, t0, ap, apa) and + fwdFlow0(node, state, cc, summaryCtx, t0, ap, apa) and PrevStage::revFlow(node, state, apa) and filter(node, state, t0, ap, t) and ( @@ -1497,25 +1521,22 @@ module MakeImpl Lang> { pragma[nomagic] private predicate typeStrengthen(Typ t0, Ap ap, Typ t) { - fwdFlow1(_, _, _, _, _, _, t0, t, ap, _) and t0 != t + fwdFlow1(_, _, _, _, t0, t, ap, _) and t0 != t } pragma[nomagic] private predicate fwdFlow0( - NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t, Ap ap, ApApprox apa + NodeEx node, FlowState state, Cc cc, SummaryCtx summaryCtx, Typ t, Ap ap, ApApprox apa ) { sourceNode(node, state) and (if hasSourceCallCtx() then cc = ccSomeCall() else cc = ccNone()) and - argT instanceof TypOption::None and - argAp = apNone() and - summaryCtx = TParamNodeNone() and + summaryCtx = TSummaryCtxNone() and t = getNodeTyp(node) and ap instanceof ApNil and apa = getApprox(ap) or exists(NodeEx mid, FlowState state0, Typ t0, LocalCc localCc | - fwdFlow(mid, state0, cc, summaryCtx, argT, argAp, t0, ap, apa) and + fwdFlow(mid, state0, cc, summaryCtx, t0, ap, apa) and localCc = getLocalCc(cc) | localStep(mid, state0, node, state, true, _, localCc, _) and @@ -1527,73 +1548,107 @@ module MakeImpl Lang> { or fwdFlowJump(node, state, t, ap, apa) and cc = ccNone() and - summaryCtx = TParamNodeNone() and - argT instanceof TypOption::None and - argAp = apNone() + summaryCtx = TSummaryCtxNone() or // store exists(Content c, Typ t0, Ap ap0 | - fwdFlowStore(_, t0, ap0, c, t, node, state, cc, summaryCtx, argT, argAp) and + fwdFlowStore(_, t0, ap0, c, t, node, state, cc, summaryCtx) and ap = apCons(c, t0, ap0) and apa = getApprox(ap) ) or // read exists(Typ t0, Ap ap0, Content c | - fwdFlowRead(t0, ap0, c, _, node, state, cc, summaryCtx, argT, argAp) and + fwdFlowRead(t0, ap0, c, _, node, state, cc, summaryCtx) and fwdFlowConsCand(t0, ap0, c, t, ap) and apa = getApprox(ap) ) or - // flow into a callable - exists(boolean allowsFlowThrough | - fwdFlowIn(node, apa, state, cc, t, ap, allowsFlowThrough) and - if allowsFlowThrough = true - then ( - summaryCtx = TParamNodeSome(node.asNode()) and - argT = TypOption::some(t) and - argAp = apSome(ap) - ) else ( - summaryCtx = TParamNodeNone() and - argT instanceof TypOption::None and - argAp = apNone() and - // When the call contexts of source and sink needs to match then there's - // never any reason to enter a callable except to find a summary. See also - // the comment in `PathNodeMid::isAtSink`. - not Config::getAFeature() instanceof FeatureEqualSourceSinkCallContext - ) - ) + // flow into a callable without summary context + fwdFlowInNoFlowThrough(node, apa, state, cc, t, ap) and + summaryCtx = TSummaryCtxNone() and + // When the call contexts of source and sink needs to match then there's + // never any reason to enter a callable except to find a summary. See also + // the comment in `PathNodeMid::isAtSink`. + not Config::getAFeature() instanceof FeatureEqualSourceSinkCallContext + or + // flow into a callable with summary context (non-linear recursion) + fwdFlowInFlowThrough(node, apa, state, cc, t, ap) and + summaryCtx = TSummaryCtxSome(node, state, t, ap) or // flow out of a callable - fwdFlowOut(_, _, node, state, cc, summaryCtx, argT, argAp, t, ap, apa) + fwdFlowOut(_, _, node, state, cc, summaryCtx, t, ap, apa) or // flow through a callable exists( DataFlowCall call, CcCall ccc, RetNodeEx ret, boolean allowsFieldFlow, ApApprox innerArgApa | - fwdFlowThrough(call, cc, state, ccc, summaryCtx, argT, argAp, t, ap, apa, ret, - innerArgApa) and + fwdFlowThrough(call, cc, state, ccc, summaryCtx, t, ap, apa, ret, innerArgApa) and flowThroughOutOfCall(call, ccc, ret, node, allowsFieldFlow, innerArgApa, apa) and + not inBarrier(node, state) and if allowsFieldFlow = false then ap instanceof ApNil else any() ) } + private newtype TSummaryCtx = + TSummaryCtxNone() or + TSummaryCtxSome(ParamNodeEx p, FlowState state, Typ t, Ap ap) { + fwdFlowInFlowThrough(p, _, state, _, t, ap) + } + + /** + * A context for generating flow summaries. This represents flow entry through + * a specific parameter with an access path of a specific shape. + * + * Summaries are only created for parameters that may flow through. + */ + private class SummaryCtx extends TSummaryCtx { + abstract string toString(); + + abstract Location getLocation(); + } + + /** A summary context from which no flow summary can be generated. */ + private class SummaryCtxNone extends SummaryCtx, TSummaryCtxNone { + override string toString() { result = "" } + + override Location getLocation() { result.hasLocationInfo("", 0, 0, 0, 0) } + } + + /** A summary context from which a flow summary can be generated. */ + private class SummaryCtxSome extends SummaryCtx, TSummaryCtxSome { + private ParamNodeEx p; + private FlowState state; + private Typ t; + private Ap ap; + + SummaryCtxSome() { this = TSummaryCtxSome(p, state, t, ap) } + + ParamNodeEx getParamNode() { result = p } + + private string ppTyp() { result = t.toString() and result != "" } + + override string toString() { result = p + concat(" : " + this.ppTyp()) + " " + ap } + + override Location getLocation() { result = p.getLocation() } + } + private predicate fwdFlowJump(NodeEx node, FlowState state, Typ t, Ap ap, ApApprox apa) { exists(NodeEx mid | - fwdFlow(mid, state, _, _, _, _, t, ap, apa) and + fwdFlow(mid, state, _, _, t, ap, apa) and jumpStepEx(mid, node) ) or exists(NodeEx mid | - fwdFlow(mid, state, _, _, _, _, _, ap, apa) and + fwdFlow(mid, state, _, _, _, ap, apa) and additionalJumpStep(mid, node, _) and t = getNodeTyp(node) and ap instanceof ApNil ) or exists(NodeEx mid, FlowState state0 | - fwdFlow(mid, state0, _, _, _, _, _, ap, apa) and + fwdFlow(mid, state0, _, _, _, ap, apa) and additionalJumpStateStep(mid, state0, node, state) and t = getNodeTyp(node) and ap instanceof ApNil @@ -1603,10 +1658,12 @@ module MakeImpl Lang> { pragma[nomagic] private predicate fwdFlowStore( NodeEx node1, Typ t1, Ap ap1, Content c, Typ t2, NodeEx node2, FlowState state, Cc cc, - ParamNodeOption summaryCtx, TypOption argT, ApOption argAp + SummaryCtx summaryCtx ) { exists(DataFlowType contentType, DataFlowType containerType, ApApprox apa1 | - fwdFlow(node1, state, cc, summaryCtx, argT, argAp, t1, ap1, apa1) and + fwdFlow(node1, state, cc, summaryCtx, t1, ap1, apa1) and + not outBarrier(node1, state) and + not inBarrier(node2, state) and PrevStage::storeStepCand(node1, apa1, c, node2, contentType, containerType) and t2 = getTyp(containerType) and typecheckStore(t1, contentType) @@ -1620,7 +1677,7 @@ module MakeImpl Lang> { */ pragma[nomagic] private predicate fwdFlowConsCand(Typ t2, Ap cons, Content c, Typ t1, Ap tail) { - fwdFlowStore(_, t1, tail, c, t2, _, _, _, _, _, _) and + fwdFlowStore(_, t1, tail, c, t2, _, _, _, _) and cons = apCons(c, t1, tail) or exists(Typ t0 | @@ -1644,10 +1701,12 @@ module MakeImpl Lang> { pragma[nomagic] private predicate fwdFlowRead( Typ t, Ap ap, Content c, NodeEx node1, NodeEx node2, FlowState state, Cc cc, - ParamNodeOption summaryCtx, TypOption argT, ApOption argAp + SummaryCtx summaryCtx ) { exists(ApHeadContent apc | - fwdFlow(node1, state, cc, summaryCtx, argT, argAp, t, ap, _) and + fwdFlow(node1, state, cc, summaryCtx, t, ap, _) and + not outBarrier(node1, state) and + not inBarrier(node2, state) and apc = getHeadContent(ap) and readStepCand0(node1, apc, c, node2) ) @@ -1655,20 +1714,15 @@ module MakeImpl Lang> { pragma[nomagic] private predicate fwdFlowIntoArg( - ArgNodeEx arg, FlowState state, Cc outercc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t, Ap ap, boolean emptyAp, ApApprox apa, boolean cc + ArgNodeEx arg, FlowState state, Cc outercc, SummaryCtx summaryCtx, Typ t, Ap ap, + boolean emptyAp, ApApprox apa, boolean cc ) { - fwdFlow(arg, state, outercc, summaryCtx, argT, argAp, t, ap, apa) and + fwdFlow(arg, state, outercc, summaryCtx, t, ap, apa) and (if instanceofCcCall(outercc) then cc = true else cc = false) and if ap instanceof ApNil then emptyAp = true else emptyAp = false } - private signature module FwdFlowInInputSig { - default predicate callRestriction(DataFlowCall call) { any() } - - bindingset[p, apa] - default predicate parameterRestriction(ParamNodeEx p, ApApprox apa) { any() } - } + private signature predicate flowThroughSig(); /** * Exposes the inlined predicate `fwdFlowIn`, which is used to calculate both @@ -1678,19 +1732,40 @@ module MakeImpl Lang> { * need to record the argument that flows into the parameter. * * For flow through, we do need to record the argument, however, we can restrict - * this to arguments that may actually flow through, using `callRestriction` and - * `parameterRestriction`, which reduces the argument-to-parameter fan-in - * significantly. + * this to arguments that may actually flow through, which reduces the + * argument-to-parameter fan-in significantly. */ - private module FwdFlowIn { + private module FwdFlowIn { pragma[nomagic] private predicate callEdgeArgParamRestricted( - DataFlowCall call, DataFlowCallable c, ArgNodeEx arg, ParamNodeEx p, - boolean allowsFieldFlow, ApApprox apa + DataFlowCall call, DataFlowCallable c, ArgNodeEx arg, ParamNodeEx p, boolean emptyAp, + ApApprox apa ) { - PrevStage::callEdgeArgParam(call, c, arg, p, allowsFieldFlow, apa) and - I::callRestriction(call) and - I::parameterRestriction(p, apa) + exists(boolean allowsFieldFlow | + PrevStage::callEdgeArgParam(call, c, arg, p, allowsFieldFlow, apa) + | + if + PrevStage::callMayFlowThroughRev(call) and + PrevStage::parameterMayFlowThrough(p, apa) + then + emptyAp = true and + apa instanceof PrevStage::ApNil and + flowThrough() + or + emptyAp = false and + allowsFieldFlow = true and + if allowsFieldFlowThrough(call, c) then flowThrough() else not flowThrough() + else ( + not flowThrough() and + ( + emptyAp = true and + apa instanceof PrevStage::ApNil + or + emptyAp = false and + allowsFieldFlow = true + ) + ) + ) } pragma[nomagic] @@ -1722,10 +1797,10 @@ module MakeImpl Lang> { bindingset[call] pragma[inline_late] private predicate callEdgeArgParamRestrictedInlineLate( - DataFlowCall call, DataFlowCallable c, ArgNodeEx arg, ParamNodeEx p, - boolean allowsFieldFlow, ApApprox apa + DataFlowCall call, DataFlowCallable c, ArgNodeEx arg, ParamNodeEx p, boolean emptyAp, + ApApprox apa ) { - callEdgeArgParamRestricted(call, c, arg, p, allowsFieldFlow, apa) + callEdgeArgParamRestricted(call, c, arg, p, emptyAp, apa) } bindingset[call, ctx] @@ -1748,43 +1823,36 @@ module MakeImpl Lang> { pragma[inline] private predicate fwdFlowInCand( DataFlowCall call, ArgNodeEx arg, FlowState state, Cc outercc, DataFlowCallable inner, - ParamNodeEx p, ParamNodeOption summaryCtx, TypOption argT, ApOption argAp, Typ t, Ap ap, - boolean emptyAp, ApApprox apa, boolean cc, boolean allowsFlowThrough + ParamNodeEx p, SummaryCtx summaryCtx, Typ t, Ap ap, boolean emptyAp, ApApprox apa, + boolean cc ) { - exists(boolean allowsFieldFlow | - fwdFlowIntoArg(arg, state, outercc, summaryCtx, argT, argAp, t, ap, emptyAp, apa, cc) and - ( - inner = viableImplCallContextReducedInlineLate(call, arg, outercc) - or - viableImplArgNotCallContextReduced(call, arg, outercc) - ) and - callEdgeArgParamRestrictedInlineLate(call, inner, arg, p, allowsFieldFlow, apa) and - (if allowsFieldFlow = false then emptyAp = true else any()) and - if allowsFieldFlowThrough(call, inner) - then allowsFlowThrough = true - else allowsFlowThrough = emptyAp - ) + fwdFlowIntoArg(arg, state, outercc, summaryCtx, t, ap, emptyAp, apa, cc) and + ( + inner = viableImplCallContextReducedInlineLate(call, arg, outercc) + or + viableImplArgNotCallContextReduced(call, arg, outercc) + ) and + not outBarrier(arg, state) and + not inBarrier(p, state) and + callEdgeArgParamRestrictedInlineLate(call, inner, arg, p, emptyAp, apa) } pragma[inline] private predicate fwdFlowInCandTypeFlowDisabled( DataFlowCall call, ArgNodeEx arg, FlowState state, Cc outercc, DataFlowCallable inner, - ParamNodeEx p, ParamNodeOption summaryCtx, TypOption argT, ApOption argAp, Typ t, Ap ap, - ApApprox apa, boolean cc, boolean allowsFlowThrough + ParamNodeEx p, SummaryCtx summaryCtx, Typ t, Ap ap, ApApprox apa, boolean cc ) { not enableTypeFlow() and - fwdFlowInCand(call, arg, state, outercc, inner, p, summaryCtx, argT, argAp, t, ap, _, - apa, cc, allowsFlowThrough) + fwdFlowInCand(call, arg, state, outercc, inner, p, summaryCtx, t, ap, _, apa, cc) } pragma[nomagic] private predicate fwdFlowInCandTypeFlowEnabled( DataFlowCall call, ArgNodeEx arg, Cc outercc, DataFlowCallable inner, ParamNodeEx p, - boolean emptyAp, ApApprox apa, boolean cc, boolean allowsFlowThrough + boolean emptyAp, ApApprox apa, boolean cc ) { enableTypeFlow() and - fwdFlowInCand(call, arg, _, outercc, inner, p, _, _, _, _, _, emptyAp, apa, cc, - allowsFlowThrough) + fwdFlowInCand(call, arg, _, outercc, inner, p, _, _, _, emptyAp, apa, cc) } pragma[nomagic] @@ -1799,10 +1867,9 @@ module MakeImpl Lang> { pragma[nomagic] private predicate fwdFlowInValidEdgeTypeFlowEnabled( DataFlowCall call, ArgNodeEx arg, Cc outercc, DataFlowCallable inner, ParamNodeEx p, - CcCall innercc, boolean emptyAp, ApApprox apa, boolean cc, boolean allowsFlowThrough + CcCall innercc, boolean emptyAp, ApApprox apa, boolean cc ) { - fwdFlowInCandTypeFlowEnabled(call, arg, outercc, inner, p, emptyAp, apa, cc, - allowsFlowThrough) and + fwdFlowInCandTypeFlowEnabled(call, arg, outercc, inner, p, emptyAp, apa, cc) and FwdTypeFlow::typeFlowValidEdgeIn(call, inner, cc) and innercc = getCallContextCall(call, inner) } @@ -1810,37 +1877,43 @@ module MakeImpl Lang> { pragma[inline] predicate fwdFlowIn( DataFlowCall call, ArgNodeEx arg, DataFlowCallable inner, ParamNodeEx p, - FlowState state, Cc outercc, CcCall innercc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t, Ap ap, ApApprox apa, boolean cc, boolean allowsFlowThrough + FlowState state, Cc outercc, CcCall innercc, SummaryCtx summaryCtx, Typ t, Ap ap, + ApApprox apa, boolean cc ) { // type flow disabled: linear recursion - fwdFlowInCandTypeFlowDisabled(call, arg, state, outercc, inner, p, summaryCtx, argT, - argAp, t, ap, apa, cc, allowsFlowThrough) and + fwdFlowInCandTypeFlowDisabled(call, arg, state, outercc, inner, p, summaryCtx, t, ap, + apa, cc) and fwdFlowInValidEdgeTypeFlowDisabled(call, inner, innercc, pragma[only_bind_into](cc)) or // type flow enabled: non-linear recursion exists(boolean emptyAp | - fwdFlowIntoArg(arg, state, outercc, summaryCtx, argT, argAp, t, ap, emptyAp, apa, cc) and + fwdFlowIntoArg(arg, state, outercc, summaryCtx, t, ap, emptyAp, apa, cc) and fwdFlowInValidEdgeTypeFlowEnabled(call, arg, outercc, inner, p, innercc, emptyAp, apa, - cc, allowsFlowThrough) + cc) ) } } - private module FwdFlowInNoRestriction implements FwdFlowInInputSig { } + private predicate bottom() { none() } + + private module FwdFlowInNoThrough = FwdFlowIn; pragma[nomagic] - private predicate fwdFlowIn( - ParamNodeEx p, ApApprox apa, FlowState state, CcCall innercc, Typ t, Ap ap, - boolean allowsFlowThrough + private predicate fwdFlowInNoFlowThrough( + ParamNodeEx p, ApApprox apa, FlowState state, CcCall innercc, Typ t, Ap ap ) { - exists(boolean allowsFlowThrough0 | - FwdFlowIn::fwdFlowIn(_, _, _, p, state, _, innercc, _, _, _, t, - ap, apa, _, allowsFlowThrough0) and - if PrevStage::parameterMayFlowThrough(p, apa) - then allowsFlowThrough = allowsFlowThrough0 - else allowsFlowThrough = false - ) + FwdFlowInNoThrough::fwdFlowIn(_, _, _, p, state, _, innercc, _, t, ap, apa, _) + } + + private predicate top() { any() } + + private module FwdFlowInThrough = FwdFlowIn; + + pragma[nomagic] + private predicate fwdFlowInFlowThrough( + ParamNodeEx p, ApApprox apa, FlowState state, CcCall innercc, Typ t, Ap ap + ) { + FwdFlowInThrough::fwdFlowIn(_, _, _, p, state, _, innercc, _, t, ap, apa, _) } pragma[nomagic] @@ -1881,11 +1954,12 @@ module MakeImpl Lang> { pragma[nomagic] private predicate fwdFlowIntoRet( - RetNodeEx ret, FlowState state, CcNoCall cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t, Ap ap, ApApprox apa + RetNodeEx ret, FlowState state, CcNoCall cc, SummaryCtx summaryCtx, Typ t, Ap ap, + ApApprox apa ) { instanceofCcNoCall(cc) and - fwdFlow(ret, state, cc, summaryCtx, argT, argAp, t, ap, apa) + not outBarrier(ret, state) and + fwdFlow(ret, state, cc, summaryCtx, t, ap, apa) } pragma[nomagic] @@ -1893,7 +1967,7 @@ module MakeImpl Lang> { DataFlowCall call, RetNodeEx ret, CcNoCall innercc, DataFlowCallable inner, NodeEx out, ApApprox apa, boolean allowsFieldFlow ) { - fwdFlowIntoRet(ret, _, innercc, _, _, _, _, _, apa) and + fwdFlowIntoRet(ret, _, innercc, _, _, _, apa) and inner = ret.getEnclosingCallable() and ( call = viableImplCallContextReducedReverseInlineLate(inner, innercc) and @@ -1917,11 +1991,12 @@ module MakeImpl Lang> { pragma[inline] private predicate fwdFlowOut( DataFlowCall call, DataFlowCallable inner, NodeEx out, FlowState state, CcNoCall outercc, - ParamNodeOption summaryCtx, TypOption argT, ApOption argAp, Typ t, Ap ap, ApApprox apa + SummaryCtx summaryCtx, Typ t, Ap ap, ApApprox apa ) { exists(RetNodeEx ret, CcNoCall innercc, boolean allowsFieldFlow | - fwdFlowIntoRet(ret, state, innercc, summaryCtx, argT, argAp, t, ap, apa) and + fwdFlowIntoRet(ret, state, innercc, summaryCtx, t, ap, apa) and fwdFlowOutValidEdge(call, ret, innercc, inner, out, outercc, apa, allowsFieldFlow) and + not inBarrier(out, state) and if allowsFieldFlow = false then ap instanceof ApNil else any() ) } @@ -1938,14 +2013,15 @@ module MakeImpl Lang> { DataFlowCall call, DataFlowCallable c, ParamNodeEx p, FlowState state, CcCall innercc, Typ t, Ap ap, boolean cc ) { - FwdFlowIn::fwdFlowIn(call, _, c, p, state, _, innercc, _, _, _, - t, ap, _, cc, _) + FwdFlowInNoThrough::fwdFlowIn(call, _, c, p, state, _, innercc, _, t, ap, _, cc) + or + FwdFlowInThrough::fwdFlowIn(call, _, c, p, state, _, innercc, _, t, ap, _, cc) } pragma[nomagic] private predicate fwdFlow1Param(ParamNodeEx p, FlowState state, CcCall cc, Typ t0, Ap ap) { instanceofCcCall(cc) and - fwdFlow1(p, state, cc, _, _, _, t0, _, ap, _) + fwdFlow1(p, state, cc, _, t0, _, ap, _) } pragma[nomagic] @@ -1960,13 +2036,13 @@ module MakeImpl Lang> { private predicate dataFlowTakenCallEdgeOut0( DataFlowCall call, DataFlowCallable c, NodeEx node, FlowState state, Cc cc, Typ t, Ap ap ) { - fwdFlowOut(call, c, node, state, cc, _, _, _, t, ap, _) + fwdFlowOut(call, c, node, state, cc, _, t, ap, _) } pragma[nomagic] private predicate fwdFlow1Out(NodeEx node, FlowState state, Cc cc, Typ t0, Ap ap) { exists(ApApprox apa | - fwdFlow1(node, state, cc, _, _, _, t0, _, ap, apa) and + fwdFlow1(node, state, cc, _, t0, _, ap, apa) and PrevStage::callEdgeReturn(_, _, _, _, node, _, apa) ) } @@ -2007,48 +2083,47 @@ module MakeImpl Lang> { pragma[nomagic] private predicate fwdFlowRetFromArg( - RetNodeEx ret, FlowState state, CcCall ccc, ParamNodeEx summaryCtx, Typ argT, Ap argAp, - ApApprox argApa, Typ t, Ap ap, ApApprox apa + RetNodeEx ret, FlowState state, CcCall ccc, SummaryCtxSome summaryCtx, ApApprox argApa, + Typ t, Ap ap, ApApprox apa ) { - exists(ReturnKindExt kind | + exists(ReturnKindExt kind, ParamNodeEx p, Ap argAp | instanceofCcCall(ccc) and - fwdFlow(pragma[only_bind_into](ret), state, ccc, - TParamNodeSome(pragma[only_bind_into](summaryCtx.asNode())), TypOption::some(argT), - pragma[only_bind_into](apSome(argAp)), t, ap, pragma[only_bind_into](apa)) and + fwdFlow(pragma[only_bind_into](ret), state, ccc, summaryCtx, t, ap, + pragma[only_bind_into](apa)) and + summaryCtx = + TSummaryCtxSome(pragma[only_bind_into](p), _, _, pragma[only_bind_into](argAp)) and + not outBarrier(ret, state) and kind = ret.getKind() and - parameterFlowThroughAllowed(summaryCtx, kind) and + parameterFlowThroughAllowed(p, kind) and argApa = getApprox(argAp) and - PrevStage::returnMayFlowThrough(ret, argApa, apa, kind) + PrevStage::returnMayFlowThrough(ret, pragma[only_bind_into](argApa), apa, kind) ) } pragma[inline] private predicate fwdFlowThrough0( DataFlowCall call, ArgNodeEx arg, Cc cc, FlowState state, CcCall ccc, - ParamNodeOption summaryCtx, TypOption argT, ApOption argAp, Typ t, Ap ap, ApApprox apa, - RetNodeEx ret, ParamNodeEx innerSummaryCtx, Typ innerArgT, Ap innerArgAp, - ApApprox innerArgApa + SummaryCtx summaryCtx, Typ t, Ap ap, ApApprox apa, RetNodeEx ret, + SummaryCtxSome innerSummaryCtx, ApApprox innerArgApa ) { - fwdFlowRetFromArg(ret, state, ccc, innerSummaryCtx, innerArgT, innerArgAp, innerArgApa, t, - ap, apa) and - fwdFlowIsEntered(call, arg, cc, ccc, summaryCtx, argT, argAp, innerSummaryCtx, innerArgT, - innerArgAp) + fwdFlowRetFromArg(ret, state, ccc, innerSummaryCtx, innerArgApa, t, ap, apa) and + fwdFlowIsEntered(call, arg, cc, ccc, summaryCtx, innerSummaryCtx) } pragma[nomagic] private predicate fwdFlowThrough( - DataFlowCall call, Cc cc, FlowState state, CcCall ccc, ParamNodeOption summaryCtx, - TypOption argT, ApOption argAp, Typ t, Ap ap, ApApprox apa, RetNodeEx ret, - ApApprox innerArgApa + DataFlowCall call, Cc cc, FlowState state, CcCall ccc, SummaryCtx summaryCtx, Typ t, + Ap ap, ApApprox apa, RetNodeEx ret, ApApprox innerArgApa ) { - fwdFlowThrough0(call, _, cc, state, ccc, summaryCtx, argT, argAp, t, ap, apa, ret, _, _, - _, innerArgApa) + fwdFlowThrough0(call, _, cc, state, ccc, summaryCtx, t, ap, apa, ret, _, innerArgApa) } - private module FwdFlowThroughRestriction implements FwdFlowInInputSig { - predicate callRestriction = PrevStage::callMayFlowThroughRev/1; - - predicate parameterRestriction = PrevStage::parameterMayFlowThrough/2; + pragma[nomagic] + private predicate fwdFlowIsEntered0( + DataFlowCall call, ArgNodeEx arg, Cc cc, CcCall innerCc, SummaryCtx summaryCtx, + ParamNodeEx p, FlowState state, Typ t, Ap ap + ) { + FwdFlowInThrough::fwdFlowIn(call, arg, _, p, state, cc, innerCc, summaryCtx, t, ap, _, _) } /** @@ -2057,16 +2132,18 @@ module MakeImpl Lang> { */ pragma[nomagic] private predicate fwdFlowIsEntered( - DataFlowCall call, ArgNodeEx arg, Cc cc, CcCall innerCc, ParamNodeOption summaryCtx, - TypOption argT, ApOption argAp, ParamNodeEx p, Typ t, Ap ap + DataFlowCall call, ArgNodeEx arg, Cc cc, CcCall innerCc, SummaryCtx summaryCtx, + SummaryCtxSome innerSummaryCtx ) { - FwdFlowIn::fwdFlowIn(call, arg, _, p, _, cc, innerCc, - summaryCtx, argT, argAp, t, ap, _, _, true) + exists(ParamNodeEx p, FlowState state, Typ t, Ap ap | + fwdFlowIsEntered0(call, arg, cc, innerCc, summaryCtx, p, state, t, ap) and + innerSummaryCtx = TSummaryCtxSome(p, state, t, ap) + ) } pragma[nomagic] private predicate storeStepFwd(NodeEx node1, Typ t1, Ap ap1, Content c, NodeEx node2, Ap ap2) { - fwdFlowStore(node1, t1, ap1, c, _, node2, _, _, _, _, _) and + fwdFlowStore(node1, t1, ap1, c, _, node2, _, _, _) and ap2 = apCons(c, t1, ap1) and readStepFwd(_, ap2, c, _, _) } @@ -2074,7 +2151,7 @@ module MakeImpl Lang> { pragma[nomagic] private predicate readStepFwd(NodeEx n1, Ap ap1, Content c, NodeEx n2, Ap ap2) { exists(Typ t1 | - fwdFlowRead(t1, ap1, c, n1, n2, _, _, _, _, _) and + fwdFlowRead(t1, ap1, c, n1, n2, _, _, _) and fwdFlowConsCand(t1, ap1, c, _, ap2) ) } @@ -2082,10 +2159,9 @@ module MakeImpl Lang> { pragma[nomagic] private predicate returnFlowsThrough0( DataFlowCall call, FlowState state, CcCall ccc, Ap ap, ApApprox apa, RetNodeEx ret, - ParamNodeEx innerSummaryCtx, Typ innerArgT, Ap innerArgAp, ApApprox innerArgApa + SummaryCtxSome innerSummaryCtx, ApApprox innerArgApa ) { - fwdFlowThrough0(call, _, _, state, ccc, _, _, _, _, ap, apa, ret, innerSummaryCtx, - innerArgT, innerArgAp, innerArgApa) + fwdFlowThrough0(call, _, _, state, ccc, _, _, ap, apa, ret, innerSummaryCtx, innerArgApa) } pragma[nomagic] @@ -2094,7 +2170,8 @@ module MakeImpl Lang> { Ap argAp, ApApprox argApa, Ap ap ) { exists(DataFlowCall call, ApApprox apa, boolean allowsFieldFlow | - returnFlowsThrough0(call, state, ccc, ap, apa, ret, p, argT, argAp, argApa) and + returnFlowsThrough0(call, state, ccc, ap, apa, ret, TSummaryCtxSome(p, _, argT, argAp), + argApa) and flowThroughOutOfCall(call, ccc, ret, _, allowsFieldFlow, argApa, apa) and pos = ret.getReturnPosition() and if allowsFieldFlow = false then ap instanceof ApNil else any() @@ -2109,7 +2186,7 @@ module MakeImpl Lang> { returnFlowsThrough(_, _, _, _, pragma[only_bind_into](p), pragma[only_bind_into](argT), pragma[only_bind_into](argAp), pragma[only_bind_into](argApa), ap) and flowIntoCallApaTaken(call, _, pragma[only_bind_into](arg), p, allowsFieldFlow, argApa) and - fwdFlow(arg, _, _, _, _, _, pragma[only_bind_into](argT), pragma[only_bind_into](argAp), + fwdFlow(arg, _, _, _, pragma[only_bind_into](argT), pragma[only_bind_into](argAp), pragma[only_bind_into](argApa)) and if allowsFieldFlow = false then argAp instanceof ApNil else any() ) @@ -2121,7 +2198,7 @@ module MakeImpl Lang> { ) { exists(ApApprox apa, boolean allowsFieldFlow | flowIntoCallApaTaken(call, c, arg, p, allowsFieldFlow, apa) and - fwdFlow(arg, _, _, _, _, _, _, ap, apa) and + fwdFlow(arg, _, _, _, _, ap, apa) and if allowsFieldFlow = false then ap instanceof ApNil else any() ) } @@ -2133,7 +2210,7 @@ module MakeImpl Lang> { ) { exists(ApApprox apa, boolean allowsFieldFlow | PrevStage::callEdgeReturn(call, c, ret, _, out, allowsFieldFlow, apa) and - fwdFlow(ret, _, _, _, _, _, _, ap, apa) and + fwdFlow(ret, _, _, _, _, ap, apa) and pos = ret.getReturnPosition() and if allowsFieldFlow = false then ap instanceof ApNil else any() | @@ -2156,14 +2233,14 @@ module MakeImpl Lang> { NodeEx node, FlowState state, ReturnCtx returnCtx, ApOption returnAp, Ap ap ) { revFlow0(node, state, returnCtx, returnAp, ap) and - fwdFlow(node, state, _, _, _, _, _, ap, _) + fwdFlow(node, state, _, _, _, ap, _) } pragma[nomagic] private predicate revFlow0( NodeEx node, FlowState state, ReturnCtx returnCtx, ApOption returnAp, Ap ap ) { - fwdFlow(node, state, _, _, _, _, _, ap, _) and + fwdFlow(node, state, _, _, _, ap, _) and sinkNode(node, state) and ( if hasSinkCallCtx() @@ -2291,7 +2368,7 @@ module MakeImpl Lang> { predicate dataFlowNonCallEntry(DataFlowCallable c, boolean cc) { exists(NodeEx node, FlowState state, ApNil nil | - fwdFlow(node, state, _, _, _, _, _, nil, _) and + fwdFlow(node, state, _, _, _, nil, _) and sinkNode(node, state) and (if hasSinkCallCtx() then cc = true else cc = false) and c = node.getEnclosingCallable() @@ -2450,6 +2527,27 @@ module MakeImpl Lang> { ) } + pragma[nomagic] + private predicate nodeMayUseSummary0(NodeEx n, ParamNodeEx p, FlowState state, Ap ap) { + exists(Ap ap0 | + parameterMayFlowThrough(p, _) and + revFlow(n, state, TReturnCtxMaybeFlowThrough(_), _, ap0) and + fwdFlow(n, state, any(CcCall ccc), TSummaryCtxSome(p, _, _, ap), _, ap0, _) + ) + } + + /** + * Holds if `ap` is recorded as the summary context for flow reaching `node` + * and remains relevant for the following pruning stage. + */ + pragma[nomagic] + additional predicate nodeMayUseSummary(NodeEx n, FlowState state, Ap ap) { + exists(ParamNodeEx p | + parameterMayFlowThrough(p, ap) and + nodeMayUseSummary0(n, p, state, ap) + ) + } + pragma[nomagic] predicate returnMayFlowThrough(RetNodeEx ret, Ap argAp, Ap ap, ReturnKindExt kind) { exists(ParamNodeEx p, ReturnPosition pos | @@ -2519,84 +2617,408 @@ module MakeImpl Lang> { callEdgeReturn(call, c, _, _, _, _, _) } + /** Provides the input to `LocalFlowBigStep`. */ + signature module LocalFlowBigStepInputSig { + bindingset[node1, state1] + bindingset[node2, state2] + predicate localStep( + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, + DataFlowType t, LocalCallContext lcc, string label + ); + } + + /** + * Provides a big-step relation for local flow steps. + * + * The big-step releation is based on the `localStep` relation from the + * input module, restricted to nodes that are forwards and backwards + * reachable in this stage. + */ + additional module LocalFlowBigStep { + final private class NodeExFinal = NodeEx; + + /** + * A node where some checking is required, and hence the big-step relation + * is not allowed to step over. + */ + private class FlowCheckNode extends NodeExFinal { + FlowCheckNode() { + revFlow(this, _, _) and + ( + castNode(this.asNode()) or + clearsContentCached(this.asNode(), _) or + expectsContentCached(this.asNode(), _) or + neverSkipInPathGraph(this.asNode()) or + Config::neverSkip(this.asNode()) + ) + } + } + + private predicate additionalLocalStateStep( + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, DataFlowType t, + LocalCallContext lcc, string label + ) { + exists(ApNil nil | + revFlow(node1, state1, pragma[only_bind_into](nil)) and + revFlow(node2, state2, pragma[only_bind_into](nil)) and + Input::localStep(node1, state1, node2, state2, false, t, lcc, label) and + state1 != state2 + ) + } + + /** + * Holds if `node` can be the first node in a maximal subsequence of local + * flow steps in a dataflow path. + */ + private predicate localFlowEntry(NodeEx node, FlowState state, Ap ap) { + revFlow(node, state, ap) and + ( + sourceNode(node, state) + or + jumpStepEx(_, node) + or + additionalJumpStep(_, node, _) + or + additionalJumpStateStep(_, _, node, state) + or + node instanceof ParamNodeEx + or + node.asNode() instanceof OutNodeExt + or + storeStepCand(_, _, _, node, _, _) + or + readStepCand(_, _, node) + or + node instanceof FlowCheckNode + or + exists(FlowState s | + additionalLocalStateStep(_, s, node, state, _, _, _) and + s != state + ) + ) + } + + /** + * Holds if `node` can be the last node in a maximal subsequence of local + * flow steps in a dataflow path. + */ + private predicate localFlowExit(NodeEx node, FlowState state, Ap ap) { + revFlow(node, pragma[only_bind_into](state), pragma[only_bind_into](ap)) and + ( + exists(NodeEx next, Ap apNext | revFlow(next, pragma[only_bind_into](state), apNext) | + jumpStepEx(node, next) and + apNext = ap + or + additionalJumpStep(node, next, _) and + apNext = ap and + ap instanceof ApNil + or + callEdgeArgParam(_, _, node, next, _, ap) and + apNext = ap + or + callEdgeReturn(_, _, node, _, next, _, ap) and + apNext = ap + or + storeStepCand(node, _, _, next, _, _) + or + readStepCand(node, _, next) + ) + or + exists(NodeEx next, FlowState s | + revFlow(next, s, pragma[only_bind_into](ap)) and ap instanceof ApNil + | + additionalJumpStateStep(node, state, next, s) + or + additionalLocalStateStep(node, state, next, s) and + s != state + ) + or + node instanceof FlowCheckNode + or + sinkNode(node, state) and + ap instanceof ApNil + ) + } + + /** + * Holds if the local path from `node1` to `node2` is a prefix of a maximal + * subsequence of local flow steps in a dataflow path. + * + * This is the transitive closure of `[additional]localFlowStep` beginning + * at `localFlowEntry`. + */ + pragma[nomagic] + private predicate localFlowStepPlus( + NodeEx node1, FlowState state, NodeEx node2, boolean preservesValue, DataFlowType t, + LocalCallContext cc, string label + ) { + not inBarrier(node2, state) and + not outBarrier(node1, state) and + exists(NodeEx mid, boolean preservesValue2, DataFlowType t2, string label2, Ap ap | + Input::localStep(mid, state, node2, state, preservesValue2, t2, cc, label2) and + revFlow(node2, pragma[only_bind_into](state), pragma[only_bind_into](ap)) and + not outBarrier(mid, state) and + (preservesValue = true or ap instanceof ApNil) + | + node1 = mid and + localFlowEntry(node1, pragma[only_bind_into](state), pragma[only_bind_into](ap)) and + preservesValue = preservesValue2 and + label = label2 and + t = t2 and + node1 != node2 + or + exists(boolean preservesValue1, DataFlowType t1, string label1 | + localFlowStepPlus(node1, pragma[only_bind_into](state), mid, preservesValue1, t1, + cc, label1) and + not mid instanceof FlowCheckNode and + preservesValue = preservesValue2.booleanAnd(preservesValue1) and + label = mergeLabels(label1, label2) and + if preservesValue2 = true then t = t1 else t = t2 + ) + ) + } + + /** + * Holds if `node1` can step to `node2` in one or more local steps and this + * path can occur as a maximal subsequence of local steps in a dataflow path. + */ + pragma[nomagic] + predicate localFlowBigStep( + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, + DataFlowType t, LocalCallContext callContext, string label + ) { + exists(Ap ap | + localFlowStepPlus(node1, state1, node2, preservesValue, t, callContext, label) and + localFlowExit(node2, state1, ap) and + state1 = state2 + | + preservesValue = true or ap instanceof ApNil + ) + or + additionalLocalStateStep(node1, state1, node2, state2, t, callContext, label) and + preservesValue = false + } + } + /** * INTERNAL: Only for debugging. * * Provides a graph representation of the data flow in this stage suitable for use in a `path-problem` query. */ additional module Graph { - private newtype TStagePathNode = - TStagePathNodeMid( - NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t, Ap ap - ) { - fwdFlow(node, state, cc, summaryCtx, argT, argAp, t, ap, _) and + private newtype TPathNode = + TPathNodeMid(NodeEx node, FlowState state, Cc cc, SummaryCtx summaryCtx, Typ t, Ap ap) { + fwdFlow(node, state, cc, summaryCtx, t, ap, _) and revFlow(node, state, _, _, ap) } or - TStagePathNodeSrcGrp() or - TStagePathNodeSinkGrp() + TPathNodeSink(NodeEx node, FlowState state) { + exists(PathNodeMid sink | + sink.isAtSink() and + node = sink.toNormalSinkNodeEx() and + state = sink.getState() + ) + } or + TPathNodeSrcGrp() or + TPathNodeSinkGrp() - class StagePathNode extends TStagePathNode { + class PathNodeImpl extends TPathNode { + abstract NodeEx getNodeEx(); + + /** Gets the `FlowState` of this node. */ + abstract FlowState getState(); + + /** Holds if this node is a source. */ + abstract predicate isSource(); + + /** Holds if this node is a sink. */ + predicate isSink() { this instanceof TPathNodeSink } + + abstract PathNodeImpl getASuccessorImpl(string label); + + private PathNodeImpl getASuccessorIfHidden(string label) { + this.isHidden() and + result = this.getASuccessorImpl(label) + } + + private PathNodeImpl getASuccessorFromNonHidden(string label) { + result = this.getASuccessorImpl(label) and + not this.isHidden() + or + exists(string l1, string l2 | + result = this.getASuccessorFromNonHidden(l1).getASuccessorIfHidden(l2) and + label = mergeLabels(l1, l2) + ) + } + + final PathNodeImpl getANonHiddenSuccessor(string label) { + result = this.getASuccessorFromNonHidden(label) and not result.isHidden() + } + + predicate isHidden() { + not Config::includeHiddenNodes() and + ( + hiddenNode(this.getNodeEx().asNode()) and + not this.isSource() and + not this instanceof PathNodeSink + or + this.getNodeEx() instanceof TNodeImplicitRead + or + hiddenNode(this.getNodeEx().asParamReturnNode()) + ) + } + + /** Gets a textual representation of this element. */ abstract string toString(); - abstract Location getLocation(); + /** Gets the location of this node. */ + Location getLocation() { result = this.getNodeEx().getLocation() } - /** Gets the corresponding `Node`, if any. */ - Node getNode() { none() } + predicate isArbitrarySource() { this instanceof TPathNodeSrcGrp } - predicate isSource() { none() } - - predicate isSink() { none() } - - predicate isArbitrarySource() { this instanceof TStagePathNodeSrcGrp } - - predicate isArbitrarySink() { this instanceof TStagePathNodeSinkGrp } + predicate isArbitrarySink() { this instanceof TPathNodeSinkGrp } } - class StagePathNodeSrcGrp extends StagePathNode, TStagePathNodeSrcGrp { + private class PathNodeSrcGrp extends PathNodeImpl, TPathNodeSrcGrp { override string toString() { result = "" } override Location getLocation() { result.hasLocationInfo("", 0, 0, 0, 0) } + + override NodeEx getNodeEx() { none() } + + override FlowState getState() { none() } + + override PathNodeImpl getASuccessorImpl(string label) { + result.isSource() and label = "" + } + + override predicate isSource() { none() } } - class StagePathNodeSinkGrp extends StagePathNode, TStagePathNodeSinkGrp { + private class PathNodeSinkGrp extends PathNodeImpl, TPathNodeSinkGrp { override string toString() { result = "" } override Location getLocation() { result.hasLocationInfo("", 0, 0, 0, 0) } + + override NodeEx getNodeEx() { none() } + + override FlowState getState() { none() } + + override PathNodeImpl getASuccessorImpl(string label) { none() } + + override predicate isSource() { none() } } - class StagePathNodeMid extends StagePathNode, TStagePathNodeMid { + /** + * An intermediate flow graph node. This is a tuple consisting of a node, + * a `FlowState`, a call context, a summary context, a tracked type, and an access path. + */ + private class PathNodeMid extends PathNodeImpl, TPathNodeMid { NodeEx node; FlowState state; Cc cc; - ParamNodeOption summaryCtx; - TypOption argT; - ApOption argAp; + SummaryCtx summaryCtx; Typ t; Ap ap; - StagePathNodeMid() { - this = TStagePathNodeMid(node, state, cc, summaryCtx, argT, argAp, t, ap) + PathNodeMid() { this = TPathNodeMid(node, state, cc, summaryCtx, t, ap) } + + override NodeEx getNodeEx() { result = node } + + override FlowState getState() { result = state } + + private PathNodeMid getSuccMid(string label) { + localStep(this, result, label) + or + nonLocalStep(this, result, label) } - override string toString() { + private predicate isSourceWithLabel(string labelprefix) { + exists(string model | + this.isSource() and + sourceModel(node, model) and + model != "" and + labelprefix = "Src:" + model + " " + ) + } + + /** If this node corresponds to a sink, gets the normal node for that sink. */ + pragma[nomagic] + NodeEx toNormalSinkNodeEx() { + exists(Node n | + pragma[only_bind_out](node.asNodeOrImplicitRead()) = n and + (Config::isSink(n) or Config::isSink(n, _)) and + result.asNode() = n + ) + } + + override PathNodeImpl getASuccessorImpl(string label) { + // an intermediate step to another intermediate node + exists(string l2 | result = this.getSuccMid(l2) | + not this.isSourceWithLabel(_) and label = l2 + or + exists(string l1 | + this.isSourceWithLabel(l1) and + label = l1 + l2 + ) + ) + or + // a final step to a sink + exists(string l2, string sinkmodel | + result = this.getSuccMid(l2).projectToSink(sinkmodel) + | + not this.isSourceWithLabel(_) and + if sinkmodel != "" then label = l2 + " Sink:" + sinkmodel else label = l2 + or + exists(string l1 | + this.isSourceWithLabel(l1) and + if sinkmodel != "" + then label = l1 + l2 + " Sink:" + sinkmodel + else label = l1 + l2 + ) + ) + } + + private string ppType() { + exists(string ppt | ppt = t.toString() | + if ppt = "" then result = "" else result = " : " + ppt + ) + } + + private string ppAp() { + exists(string s | s = ap.toString() | + if s = "" then result = "" else result = " " + s + ) + } + + private string ppCtx() { result = " <" + cc + ">" } + + private string ppSummaryCtx() { + summaryCtx instanceof SummaryCtxNone and result = "" + or + summaryCtx instanceof SummaryCtxSome and + result = " <" + summaryCtx + ">" + } + + override string toString() { result = node.toString() + this.ppType() + this.ppAp() } + + /** + * Gets a textual representation of this element, including a textual + * representation of the call context. + */ + string toStringWithContext() { result = - node.toString() + " " + cc.toString() + " " + t.toString() + " " + ap.toString() + node.toString() + this.ppType() + this.ppAp() + this.ppCtx() + this.ppSummaryCtx() } - override Location getLocation() { result = node.getLocation() } - - override Node getNode() { result = node.asNode() } - override predicate isSource() { sourceNode(node, state) and (if hasSourceCallCtx() then cc = ccSomeCall() else cc = ccNone()) and - summaryCtx = TParamNodeNone() and + summaryCtx = TSummaryCtxNone() and t = getNodeTyp(node) and ap instanceof ApNil } - override predicate isSink() { + predicate isAtSink() { sinkNode(node, state) and ap instanceof ApNil and // For `FeatureHasSinkCallContext` the condition `cc instanceof CallContextNoCall` @@ -2610,103 +3032,130 @@ module MakeImpl Lang> { // which means that the summary context being empty holds if and // only if we are in the call context of the source. if Config::getAFeature() instanceof FeatureEqualSourceSinkCallContext - then summaryCtx = TParamNodeNone() + then summaryCtx = TSummaryCtxNone() else if Config::getAFeature() instanceof FeatureHasSinkCallContext then instanceofCcNoCall(cc) else any() } + + PathNodeSink projectToSink(string model) { + this.isAtSink() and + sinkModel(node, model) and + result.getNodeEx() = this.toNormalSinkNodeEx() and + result.getState() = state + } + } + + /** + * A flow graph node corresponding to a sink. This is disjoint from the + * intermediate nodes in order to uniquely correspond to a given sink by + * excluding the call context. + */ + private class PathNodeSink extends PathNodeImpl, TPathNodeSink { + NodeEx node; + FlowState state; + + PathNodeSink() { this = TPathNodeSink(node, state) } + + override NodeEx getNodeEx() { result = node } + + override FlowState getState() { result = state } + + override string toString() { result = node.toString() } + + override PathNodeImpl getASuccessorImpl(string label) { + result.isArbitrarySink() and label = "" + } + + override predicate isSource() { sourceNode(node, state) } } pragma[nomagic] private predicate fwdFlowInStep( ArgNodeEx arg, ParamNodeEx p, FlowState state, Cc outercc, CcCall innercc, - ParamNodeOption summaryCtx, TypOption argT, ApOption argAp, Typ t, Ap ap, - boolean allowsFlowThrough + SummaryCtx outerSummaryCtx, SummaryCtx innerSummaryCtx, Typ t, Ap ap ) { - exists(ApApprox apa, boolean allowsFlowThrough0 | - FwdFlowIn::fwdFlowIn(_, arg, _, p, state, outercc, innercc, - summaryCtx, argT, argAp, t, ap, apa, _, allowsFlowThrough0) and - if PrevStage::parameterMayFlowThrough(p, apa) - then allowsFlowThrough = allowsFlowThrough0 - else allowsFlowThrough = false - ) + FwdFlowInNoThrough::fwdFlowIn(_, arg, _, p, state, outercc, innercc, outerSummaryCtx, t, + ap, _, _) and + innerSummaryCtx = TSummaryCtxNone() + or + FwdFlowInThrough::fwdFlowIn(_, arg, _, p, state, outercc, innercc, outerSummaryCtx, t, + ap, _, _) and + innerSummaryCtx = TSummaryCtxSome(p, state, t, ap) } pragma[nomagic] private predicate fwdFlowThroughStep0( DataFlowCall call, ArgNodeEx arg, Cc cc, FlowState state, CcCall ccc, - ParamNodeOption summaryCtx, TypOption argT, ApOption argAp, Typ t, Ap ap, ApApprox apa, - RetNodeEx ret, ParamNodeEx innerSummaryCtx, Typ innerArgT, Ap innerArgAp, - ApApprox innerArgApa + SummaryCtx summaryCtx, Typ t, Ap ap, ApApprox apa, RetNodeEx ret, + SummaryCtxSome innerSummaryCtx, ApApprox innerArgApa ) { - fwdFlowThrough0(call, arg, cc, state, ccc, summaryCtx, argT, argAp, t, ap, apa, ret, - innerSummaryCtx, innerArgT, innerArgAp, innerArgApa) + fwdFlowThrough0(call, arg, cc, state, ccc, summaryCtx, t, ap, apa, ret, innerSummaryCtx, + innerArgApa) } - bindingset[node, state, cc, summaryCtx, argT, argAp, t, ap] + bindingset[node, state, cc, summaryCtx, t, ap] pragma[inline_late] - private StagePathNode mkStagePathNode( - NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t, Ap ap + private PathNodeImpl mkPathNode( + NodeEx node, FlowState state, Cc cc, SummaryCtx summaryCtx, Typ t, Ap ap ) { - result = TStagePathNodeMid(node, state, cc, summaryCtx, argT, argAp, t, ap) + result = TPathNodeMid(node, state, cc, summaryCtx, t, ap) } - private StagePathNode typeStrengthenToStagePathNode( - NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t0, Ap ap + private PathNodeImpl typeStrengthenToPathNode( + NodeEx node, FlowState state, Cc cc, SummaryCtx summaryCtx, Typ t0, Ap ap ) { exists(Typ t | - fwdFlow1(node, state, cc, summaryCtx, argT, argAp, t0, t, ap, _) and - result = TStagePathNodeMid(node, state, cc, summaryCtx, argT, argAp, t, ap) + fwdFlow1(node, state, cc, summaryCtx, t0, t, ap, _) and + result = TPathNodeMid(node, state, cc, summaryCtx, t, ap) ) } pragma[nomagic] private predicate fwdFlowThroughStep1( - StagePathNode pn1, StagePathNode pn2, StagePathNode pn3, DataFlowCall call, Cc cc, - FlowState state, CcCall ccc, ParamNodeOption summaryCtx, TypOption argT, ApOption argAp, - Typ t, Ap ap, ApApprox apa, RetNodeEx ret, ApApprox innerArgApa + PathNodeImpl pn1, PathNodeImpl pn2, PathNodeImpl pn3, DataFlowCall call, Cc cc, + FlowState state, CcCall ccc, SummaryCtx summaryCtx, Typ t, Ap ap, ApApprox apa, + RetNodeEx ret, ApApprox innerArgApa ) { - exists(FlowState state0, ArgNodeEx arg, ParamNodeEx p, Typ innerArgT, Ap innerArgAp | - fwdFlowThroughStep0(call, arg, cc, state, ccc, summaryCtx, argT, argAp, t, ap, apa, - ret, p, innerArgT, innerArgAp, innerArgApa) and - revFlow(arg, state0, _, _, _) and - pn1 = mkStagePathNode(arg, state0, cc, summaryCtx, argT, argAp, innerArgT, innerArgAp) and - pn2 = - typeStrengthenToStagePathNode(p, state0, ccc, TParamNodeSome(p.asNode()), - TypOption::some(innerArgT), apSome(innerArgAp), innerArgT, innerArgAp) and - pn3 = - mkStagePathNode(ret, state, ccc, TParamNodeSome(p.asNode()), - TypOption::some(innerArgT), apSome(innerArgAp), t, ap) + exists( + FlowState state0, ArgNodeEx arg, SummaryCtxSome innerSummaryCtx, ParamNodeEx p, + Typ innerArgT, Ap innerArgAp + | + fwdFlowThroughStep0(call, arg, cc, state, ccc, summaryCtx, t, ap, apa, ret, + innerSummaryCtx, innerArgApa) and + innerSummaryCtx = TSummaryCtxSome(p, state0, innerArgT, innerArgAp) and + pn1 = mkPathNode(arg, state0, cc, summaryCtx, innerArgT, innerArgAp) and + pn2 = typeStrengthenToPathNode(p, state0, ccc, innerSummaryCtx, innerArgT, innerArgAp) and + pn3 = mkPathNode(ret, state, ccc, innerSummaryCtx, t, ap) ) } pragma[nomagic] private predicate fwdFlowThroughStep2( - StagePathNode pn1, StagePathNode pn2, StagePathNode pn3, NodeEx node, Cc cc, - FlowState state, ParamNodeOption summaryCtx, TypOption argT, ApOption argAp, Typ t, - Ap ap + PathNodeImpl pn1, PathNodeImpl pn2, PathNodeImpl pn3, NodeEx node, Cc cc, + FlowState state, SummaryCtx summaryCtx, Typ t, Ap ap ) { exists( DataFlowCall call, CcCall ccc, RetNodeEx ret, boolean allowsFieldFlow, ApApprox innerArgApa, ApApprox apa | - fwdFlowThroughStep1(pn1, pn2, pn3, call, cc, state, ccc, summaryCtx, argT, argAp, t, - ap, apa, ret, innerArgApa) and + fwdFlowThroughStep1(pn1, pn2, pn3, call, cc, state, ccc, summaryCtx, t, ap, apa, ret, + innerArgApa) and flowThroughOutOfCall(call, ccc, ret, node, allowsFieldFlow, innerArgApa, apa) and + not inBarrier(node, state) and if allowsFieldFlow = false then ap instanceof ApNil else any() ) } private predicate localStep( - StagePathNode pn1, NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, - TypOption argT, ApOption argAp, Typ t, Ap ap, string label + PathNodeImpl pn1, NodeEx node, FlowState state, Cc cc, SummaryCtx summaryCtx, Typ t, + Ap ap, string label, boolean isStoreStep ) { exists(NodeEx mid, FlowState state0, Typ t0, LocalCc localCc | - pn1 = TStagePathNodeMid(mid, state0, cc, summaryCtx, argT, argAp, t0, ap) and - localCc = getLocalCc(cc) + pn1 = TPathNodeMid(mid, state0, cc, summaryCtx, t0, ap) and + localCc = getLocalCc(cc) and + isStoreStep = false | localStep(mid, state0, node, state, true, _, localCc, label) and t = t0 @@ -2717,71 +3166,76 @@ module MakeImpl Lang> { or // store exists(NodeEx mid, Content c, Typ t0, Ap ap0 | - pn1 = TStagePathNodeMid(mid, state, cc, summaryCtx, argT, argAp, t0, ap0) and - fwdFlowStore(mid, t0, ap0, c, t, node, state, cc, summaryCtx, argT, argAp) and + pn1 = TPathNodeMid(mid, state, cc, summaryCtx, t0, ap0) and + fwdFlowStore(mid, t0, ap0, c, t, node, state, cc, summaryCtx) and ap = apCons(c, t0, ap0) and - label = "" + label = "" and + isStoreStep = true ) or // read exists(NodeEx mid, Typ t0, Ap ap0, Content c | - pn1 = TStagePathNodeMid(mid, state, cc, summaryCtx, argT, argAp, t0, ap0) and - fwdFlowRead(t0, ap0, c, mid, node, state, cc, summaryCtx, argT, argAp) and + pn1 = TPathNodeMid(mid, state, cc, summaryCtx, t0, ap0) and + fwdFlowRead(t0, ap0, c, mid, node, state, cc, summaryCtx) and fwdFlowConsCand(t0, ap0, c, t, ap) and - label = "" + label = "" and + isStoreStep = false ) } - private predicate localStep(StagePathNode pn1, StagePathNode pn2, string label) { + private predicate localStep(PathNodeImpl pn1, PathNodeImpl pn2, string label) { exists( - NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t0, Ap ap + NodeEx node, FlowState state, Cc cc, SummaryCtx summaryCtx, Typ t0, Ap ap, + boolean isStoreStep | - localStep(pn1, node, state, cc, summaryCtx, argT, argAp, t0, ap, label) and - pn2 = typeStrengthenToStagePathNode(node, state, cc, summaryCtx, argT, argAp, t0, ap) + localStep(pn1, node, state, cc, summaryCtx, t0, ap, label, isStoreStep) and + pn2 = typeStrengthenToPathNode(node, state, cc, summaryCtx, t0, ap) and + stepFilter(node, ap, isStoreStep) ) or summaryStep(pn1, pn2, label) } - private predicate summaryLabel(StagePathNode pn1, StagePathNode pn2, string summaryLabel) { + private predicate summaryLabel(PathNodeImpl pn1, PathNodeImpl pn2, string summaryLabel) { pn1 = pn2 and summaryLabel = "" and - subpaths(_, pn1, _, _) + subpathsImpl(_, pn1, _, _) or - exists(StagePathNode mid, string l1, string l2 | + exists(PathNodeImpl mid, string l1, string l2 | summaryLabel(pn1, mid, l1) and localStep(mid, pn2, l2) and summaryLabel = mergeLabels(l1, l2) ) } - private predicate summaryStep(StagePathNode arg, StagePathNode out, string label) { - exists(StagePathNode par, StagePathNode ret | - subpaths(arg, par, ret, out) and + private predicate summaryStep(PathNodeImpl arg, PathNodeImpl out, string label) { + exists(PathNodeImpl par, PathNodeImpl ret | + subpathsImpl(arg, par, ret, out) and summaryLabel(par, ret, label) ) } private predicate nonLocalStep( - StagePathNode pn1, NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, - TypOption argT, ApOption argAp, Typ t, Ap ap, string label + PathNodeImpl pn1, NodeEx node, FlowState state, Cc cc, SummaryCtx summaryCtx, Typ t, + Ap ap, string label ) { // jump exists(NodeEx mid, FlowState state0, Typ t0 | - pn1 = TStagePathNodeMid(mid, state0, _, _, _, _, t0, ap) and + pn1 = TPathNodeMid(mid, state0, _, _, t0, ap) and cc = ccNone() and - summaryCtx = TParamNodeNone() and - argT instanceof TypOption::None and - argAp = apNone() + summaryCtx = TSummaryCtxNone() | jumpStepEx(mid, node) and state = state0 and + not outBarrier(mid, state) and + not inBarrier(node, state) and t = t0 and label = "" or additionalJumpStep(mid, node, label) and state = state0 and + not outBarrier(mid, state) and + not inBarrier(node, state) and t = getNodeTyp(node) and ap instanceof ApNil or @@ -2792,70 +3246,295 @@ module MakeImpl Lang> { ) or // flow into a callable - exists( - ArgNodeEx arg, boolean allowsFlowThrough, Cc outercc, ParamNodeOption outerSummaryCtx, - TypOption outerArgT, ApOption outerArgAp - | - pn1 = - TStagePathNodeMid(arg, state, outercc, outerSummaryCtx, outerArgT, outerArgAp, t, ap) and - fwdFlowInStep(arg, node, state, outercc, cc, outerSummaryCtx, outerArgT, outerArgAp, - t, ap, allowsFlowThrough) and - label = "" and - if allowsFlowThrough = true - then ( - summaryCtx = TParamNodeSome(node.asNode()) and - argT = TypOption::some(t) and - argAp = apSome(ap) - ) else ( - summaryCtx = TParamNodeNone() and - argT instanceof TypOption::None and - argAp = apNone() - ) + exists(ArgNodeEx arg, Cc outercc, SummaryCtx outerSummaryCtx | + pn1 = TPathNodeMid(arg, state, outercc, outerSummaryCtx, t, ap) and + fwdFlowInStep(arg, node, state, outercc, cc, outerSummaryCtx, summaryCtx, t, ap) and + label = "" ) or // flow out of a callable exists(RetNodeEx ret, CcNoCall innercc, boolean allowsFieldFlow, ApApprox apa | - pn1 = TStagePathNodeMid(ret, state, innercc, summaryCtx, argT, argAp, t, ap) and - fwdFlowIntoRet(ret, state, innercc, summaryCtx, argT, argAp, t, ap, apa) and + pn1 = TPathNodeMid(ret, state, innercc, summaryCtx, t, ap) and + fwdFlowIntoRet(ret, state, innercc, summaryCtx, t, ap, apa) and fwdFlowOutValidEdge(_, ret, innercc, _, node, cc, apa, allowsFieldFlow) and + not inBarrier(node, state) and label = "" and if allowsFieldFlow = false then ap instanceof ApNil else any() ) } - private predicate nonLocalStep(StagePathNode pn1, StagePathNode pn2, string label) { - exists( - NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t0, Ap ap - | - nonLocalStep(pn1, node, state, cc, summaryCtx, argT, argAp, t0, ap, label) and - pn2 = typeStrengthenToStagePathNode(node, state, cc, summaryCtx, argT, argAp, t0, ap) + private predicate nonLocalStep(PathNodeImpl pn1, PathNodeImpl pn2, string label) { + exists(NodeEx node, FlowState state, Cc cc, SummaryCtx summaryCtx, Typ t0, Ap ap | + nonLocalStep(pn1, node, state, cc, summaryCtx, t0, ap, label) and + pn2 = typeStrengthenToPathNode(node, state, cc, summaryCtx, t0, ap) and + stepFilter(node, ap, false) ) } - query predicate subpaths( - StagePathNode arg, StagePathNode par, StagePathNode ret, StagePathNode out + /** + * Holds if `(arg, par, ret, out)` forms a subpath-tuple. + * + * All of the nodes may be hidden. + */ + private predicate subpathsImpl( + PathNodeImpl arg, PathNodeImpl par, PathNodeImpl ret, PathNodeImpl out ) { exists( - NodeEx node, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t0, Ap ap + NodeEx node, FlowState state, Cc cc, SummaryCtx summaryCtx, Typ t0, Ap ap, + PathNodeImpl out0 | - fwdFlowThroughStep2(arg, par, ret, node, cc, state, summaryCtx, argT, argAp, t0, ap) and - out = typeStrengthenToStagePathNode(node, state, cc, summaryCtx, argT, argAp, t0, ap) + fwdFlowThroughStep2(arg, par, ret, node, cc, state, summaryCtx, t0, ap) and + out0 = typeStrengthenToPathNode(node, state, cc, summaryCtx, t0, ap) and + stepFilter(node, ap, false) + | + out = out0 or out = out0.(PathNodeMid).projectToSink(_) ) } - query predicate edges(StagePathNode pn1, StagePathNode pn2, string key, string val) { - key = "provenance" and - ( - localStep(pn1, pn2, val) + module StagePathGraph { + predicate edges(PathNodeImpl a, PathNodeImpl b, string key, string val) { + a.getASuccessorImpl(val) = b and + key = "provenance" + } + + query predicate nodes(PathNodeImpl n, string key, string val) { + key = "semmle.label" and val = n.toString() + } + + query predicate subpaths = subpathsImpl/4; + } + + module Public { + private PathNodeImpl localStep(PathNodeImpl n) { localStep(n, result, _) } + + private predicate localStepToHidden(PathNodeImpl n1, PathNodeImpl n2) { + n2 = localStep(n1) and + n2.isHidden() + } + + private predicate localStepFromHidden(PathNodeImpl n1, PathNodeImpl n2) { + n2 = localStep(n1) and + n1.isHidden() + } + + bindingset[par, ret] + pragma[inline_late] + private predicate localStepStar(PathNodeImpl par, PathNodeImpl ret) { + localStep*(par) = ret + } + + /** + * Holds if `(arg, par, ret, out)` forms a subpath-tuple. + * + * `par` and `ret` are not hidden. + */ + pragma[nomagic] + private predicate subpaths1( + PathNodeImpl arg, PathNodeImpl par, PathNodeImpl ret, PathNodeImpl out + ) { + // direct subpath + subpathsImpl(arg, any(PathNodeImpl n | localStepFromHidden*(n, par)), + any(PathNodeImpl n | localStepToHidden*(ret, n)), out) and + not par.isHidden() and + not ret.isHidden() and + localStepStar(par, ret) or - nonLocalStep(pn1, pn2, val) + // wrapped subpath using hidden nodes, e.g. flow through a callback inside + // a summarized callable + exists(PathNodeImpl par0, PathNodeImpl ret0 | + subpaths1(any(PathNodeImpl n | localStepToHidden*(par0, n)), par, ret, + any(PathNodeImpl n | localStepFromHidden*(n, ret0))) and + subpathsImpl(arg, par0, ret0, out) + ) + } + + /** + * Holds if `(arg, par, ret, out)` forms a subpath-tuple, that is, flow through + * a subpath between `par` and `ret` with the connecting edges `arg -> par` and + * `ret -> out` is summarized as the edge `arg -> out`. + * + * None of the nodes are hidden. + */ + pragma[nomagic] + private predicate subpaths2( + PathNodeImpl arg, PathNodeImpl par, PathNodeImpl ret, PathNodeImpl out + ) { + exists(PathNodeImpl out0 | + subpaths1(any(PathNodeImpl n | localStepToHidden*(arg, n)), par, ret, + any(PathNodeImpl n | localStepFromHidden*(n, out0))) and + not arg.isHidden() and + not out0.isHidden() + | + out = out0 or out = out0.(PathNodeMid).projectToSink(_) + ) + } + + /** Holds if `n` is reachable from a source. */ + private predicate fwdReach(PathNodeImpl n) { + n.isArbitrarySource() or - pn1.isArbitrarySource() and pn2.isSource() and val = "" - or - pn1.isSink() and pn2.isArbitrarySink() and val = "" - ) + exists(PathNodeImpl mid | fwdReach(mid) and mid.getANonHiddenSuccessor(_) = n) + } + + /** Holds if `n` is reachable from a source and can reach a sink. */ + private predicate directReach(PathNodeImpl n) { + fwdReach(n) and + ( + n.isArbitrarySink() or + directReach(n.getANonHiddenSuccessor(_)) + ) + } + + /** + * Holds if `n` can reach a return node in a summarized subpath that can reach a sink. + */ + private predicate retReach(PathNodeImpl n) { + fwdReach(n) and + ( + exists(PathNodeImpl out | subpaths2(_, _, n, out) | + directReach(out) or retReach(out) + ) + or + exists(PathNodeImpl mid | + retReach(mid) and + n.getANonHiddenSuccessor(_) = mid and + not subpaths2(_, mid, _, _) + ) + ) + } + + /** Holds if `n` can reach a sink or is used in a subpath that can reach a sink. */ + private predicate reach(PathNodeImpl n) { directReach(n) or retReach(n) } + + /** + * A `Node` augmented with a call context (except for sinks) and an access path. + * Only those `PathNode`s that are reachable from a source, and which can reach a sink, are generated. + */ + class PathNode instanceof PathNodeImpl { + PathNode() { + reach(this) and + not this instanceof PathNodeSrcGrp and + not this instanceof PathNodeSinkGrp + } + + /** Gets a textual representation of this element. */ + final string toString() { result = super.toString() } + + /** + * Gets a textual representation of this element, including a textual + * representation of the call context. + */ + final string toStringWithContext() { + result = this.(PathNodeMid).toStringWithContext() + or + not this instanceof PathNodeMid and result = this.toString() + } + + /** Gets the location of this node. */ + Location getLocation() { result = super.getLocation() } + + /** Gets the underlying `Node`. */ + final Node getNode() { super.getNodeEx().projectToNode() = result } + + /** Gets the parameter node through which data is returned, if any. */ + final ParameterNode asParameterReturnNode() { + result = super.getNodeEx().asParamReturnNode() + } + + /** Gets the `FlowState` of this node. */ + final FlowState getState() { result = super.getState() } + + /** Gets a successor of this node, if any. */ + final PathNode getASuccessor() { result = super.getANonHiddenSuccessor(_) } + + /** Holds if this node is a source. */ + final predicate isSource() { super.isSource() } + + /** Holds if this node is a sink. */ + final predicate isSink() { this instanceof PathNodeSink } + + /** + * Holds if this element is at the specified location. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `filepath`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ + pragma[inline] + deprecated final predicate hasLocationInfo( + string filepath, int startline, int startcolumn, int endline, int endcolumn + ) { + this.getLocation() + .hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) + } + + /** + * DEPRECATED: This functionality is no longer available. + * + * Holds if this node is a grouping of source nodes. + */ + deprecated final predicate isSourceGroup(string group) { none() } + + /** + * DEPRECATED: This functionality is no longer available. + * + * Holds if this node is a grouping of sink nodes. + */ + deprecated final predicate isSinkGroup(string group) { none() } + } + + /** Holds if `n1.getASuccessor() = n2` and `n2` can reach a sink. */ + private predicate pathSucc(PathNodeImpl n1, PathNodeImpl n2) { + n1.getANonHiddenSuccessor(_) = n2 and directReach(n2) + } + + private predicate tcSrc(PathNodeImpl n) { n.isSource() } + + private predicate tcSink(PathNodeImpl n) { n.isSink() } + + private predicate pathSuccPlus(PathNodeImpl n1, PathNodeImpl n2) = + doublyBoundedFastTC(pathSucc/2, tcSrc/1, tcSink/1)(n1, n2) + + /** + * Holds if data can flow from `source` to `sink`. + * + * The corresponding paths are generated from the end-points and the graph + * included in the module `PathGraph`. + */ + predicate flowPath(PathNode source, PathNode sink) { + exists(PathNodeImpl flowsource, PathNodeImpl flowsink | + source = flowsource and sink = flowsink + | + flowsource.isSource() and + (flowsource = flowsink or pathSuccPlus(flowsource, flowsink)) and + flowsink.isSink() + ) + } + + /** + * Provides the query predicates needed to include a graph in a path-problem query. + */ + module PathGraph implements PathGraphSig { + /** Holds if `(a,b)` is an edge in the graph of data flow path explanations. */ + query predicate edges(PathNode a, PathNode b, string key, string val) { + a.(PathNodeImpl).getANonHiddenSuccessor(val) = b and + key = "provenance" + } + + /** Holds if `n` is a node in the graph of data flow path explanations. */ + query predicate nodes(PathNode n, string key, string val) { + key = "semmle.label" and val = n.toString() + } + + /** + * Holds if `(arg, par, ret, out)` forms a subpath-tuple, that is, flow through + * a subpath between `par` and `ret` with the connecting edges `arg -> par` and + * `ret -> out` is summarized as the edge `arg -> out`. + */ + query predicate subpaths(PathNode arg, PathNode par, PathNode ret, PathNode out) { + subpaths2(arg, par, ret, out) + } + } } } @@ -2864,14 +3543,13 @@ module MakeImpl Lang> { int tfnodes, int tftuples ) { fwd = true and - nodes = count(NodeEx node | fwdFlow(node, _, _, _, _, _, _, _, _)) and + nodes = count(NodeEx node | fwdFlow(node, _, _, _, _, _, _)) and fields = count(Content f0 | fwdConsCand(f0, _, _)) and conscand = count(Content f0, Typ t, Ap ap | fwdConsCand(f0, t, ap)) and - states = count(FlowState state | fwdFlow(_, state, _, _, _, _, _, _, _)) and + states = count(FlowState state | fwdFlow(_, state, _, _, _, _, _)) and tuples = - count(NodeEx n, FlowState state, Cc cc, ParamNodeOption summaryCtx, TypOption argT, - ApOption argAp, Typ t, Ap ap | - fwdFlow(n, state, cc, summaryCtx, argT, argAp, t, ap, _) + count(NodeEx n, FlowState state, Cc cc, SummaryCtx summaryCtx, Typ t, Ap ap | + fwdFlow(n, state, cc, summaryCtx, t, ap, _) ) and calledges = count(DataFlowCall call, DataFlowCallable c | @@ -2992,17 +3670,11 @@ module MakeImpl Lang> { Typ t, LocalCc lcc, string label ) { ( - preservesValue = true and - localFlowStepNodeCand1(node1, node2, label) and + localStepNodeCand1(node1, node2, preservesValue, _, _, label) and state1 = state2 or - preservesValue = false and - additionalLocalFlowStepNodeCand1(node1, node2, label) and - state1 = state2 - or - preservesValue = false and - additionalLocalStateStep(node1, state1, node2, state2) and - label = "Config" + localStateStepNodeCand1(node1, state1, node2, state2, _, _, label) and + preservesValue = false ) and exists(t) and exists(lcc) @@ -3031,6 +3703,9 @@ module MakeImpl Lang> { ) } + bindingset[node, ap, isStoreStep] + predicate stepFilter(NodeEx node, Ap ap, boolean isStoreStep) { any() } + bindingset[typ, contentType] predicate typecheckStore(Typ typ, DataFlowType contentType) { any() } @@ -3039,192 +3714,6 @@ module MakeImpl Lang> { private module Stage2 = MkStage::Stage; - pragma[nomagic] - private predicate flowOutOfCallNodeCand2( - DataFlowCall call, RetNodeEx node1, ReturnKindExt kind, NodeEx node2, boolean allowsFieldFlow - ) { - flowOutOfCallNodeCand1(call, node1, kind, node2, allowsFieldFlow) and - Stage2::revFlow(node2) and - Stage2::revFlow(node1) - } - - pragma[nomagic] - private predicate flowIntoCallNodeCand2( - DataFlowCall call, ArgNodeEx node1, ParamNodeEx node2, boolean allowsFieldFlow - ) { - flowIntoCallNodeCand1(call, node1, node2, allowsFieldFlow) and - Stage2::revFlow(node2) and - Stage2::revFlow(node1) - } - - private module LocalFlowBigStep { - /** - * A node where some checking is required, and hence the big-step relation - * is not allowed to step over. - */ - private class FlowCheckNode extends NodeEx { - FlowCheckNode() { - castNode(this.asNode()) or - clearsContentCached(this.asNode(), _) or - expectsContentCached(this.asNode(), _) or - neverSkipInPathGraph(this.asNode()) or - Config::neverSkip(this.asNode()) - } - } - - /** - * Holds if `node` can be the first node in a maximal subsequence of local - * flow steps in a dataflow path. - */ - private predicate localFlowEntry(NodeEx node, FlowState state) { - Stage2::revFlow(node, state) and - ( - sourceNode(node, state) - or - jumpStepEx(_, node) - or - additionalJumpStep(_, node, _) - or - additionalJumpStateStep(_, _, node, state) - or - node instanceof ParamNodeEx - or - node.asNode() instanceof OutNodeExt - or - Stage2::storeStepCand(_, _, _, node, _, _) - or - Stage2::readStepCand(_, _, node) - or - node instanceof FlowCheckNode - or - exists(FlowState s | - additionalLocalStateStep(_, s, node, state) and - s != state - ) - ) - } - - /** - * Holds if `node` can be the last node in a maximal subsequence of local - * flow steps in a dataflow path. - */ - private predicate localFlowExit(NodeEx node, FlowState state) { - exists(NodeEx next | Stage2::revFlow(next, state) | - jumpStepEx(node, next) or - additionalJumpStep(node, next, _) or - flowIntoCallNodeCand2(_, node, next, _) or - flowOutOfCallNodeCand2(_, node, _, next, _) or - Stage2::storeStepCand(node, _, _, next, _, _) or - Stage2::readStepCand(node, _, next) - ) - or - exists(NodeEx next, FlowState s | Stage2::revFlow(next, s) | - additionalJumpStateStep(node, state, next, s) - or - additionalLocalStateStep(node, state, next, s) and - s != state - ) - or - Stage2::revFlow(node, state) and - node instanceof FlowCheckNode - or - sinkNode(node, state) - } - - pragma[noinline] - private predicate additionalLocalFlowStepNodeCand2( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, string label - ) { - additionalLocalFlowStepNodeCand1(node1, node2, label) and - state1 = state2 and - Stage2::revFlow(node1, pragma[only_bind_into](state1), false) and - Stage2::revFlow(node2, pragma[only_bind_into](state2), false) - or - additionalLocalStateStep(node1, state1, node2, state2) and - label = "Config" and - Stage2::revFlow(node1, state1, false) and - Stage2::revFlow(node2, state2, false) - } - - /** - * Holds if the local path from `node1` to `node2` is a prefix of a maximal - * subsequence of local flow steps in a dataflow path. - * - * This is the transitive closure of `[additional]localFlowStep` beginning - * at `localFlowEntry`. - */ - pragma[nomagic] - private predicate localFlowStepPlus( - NodeEx node1, FlowState state, NodeEx node2, boolean preservesValue, DataFlowType t, - LocalCallContext cc, string label - ) { - not isUnreachableInCall1(node2, cc) and - not inBarrier(node2, state) and - not outBarrier(node1, state) and - ( - localFlowEntry(node1, pragma[only_bind_into](state)) and - ( - localFlowStepNodeCand1(node1, node2, label) and - preservesValue = true and - t = node1.getDataFlowType() and // irrelevant dummy value - Stage2::revFlow(node2, pragma[only_bind_into](state)) - or - additionalLocalFlowStepNodeCand2(node1, state, node2, state, label) and - preservesValue = false and - t = node2.getDataFlowType() - ) and - node1 != node2 and - cc.relevantFor(node1.getEnclosingCallable()) and - not isUnreachableInCall1(node1, cc) and - not outBarrier(node1, state) - or - exists(NodeEx mid, string label1, string label2 | - localFlowStepPlus(node1, pragma[only_bind_into](state), mid, preservesValue, t, cc, - label1) and - localFlowStepNodeCand1(mid, node2, label2) and - not outBarrier(mid, state) and - not mid instanceof FlowCheckNode and - Stage2::revFlow(node2, pragma[only_bind_into](state)) and - label = mergeLabels(label1, label2) - ) - or - exists(NodeEx mid, string label1, string label2 | - localFlowStepPlus(node1, state, mid, _, _, cc, label1) and - additionalLocalFlowStepNodeCand2(mid, state, node2, state, label2) and - not outBarrier(mid, state) and - not mid instanceof FlowCheckNode and - preservesValue = false and - t = node2.getDataFlowType() and - label = mergeLabels(label1, label2) - ) - ) - } - - /** - * Holds if `node1` can step to `node2` in one or more local steps and this - * path can occur as a maximal subsequence of local steps in a dataflow path. - */ - pragma[nomagic] - predicate localFlowBigStep( - NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, - DataFlowType t, LocalCallContext callContext, string label - ) { - localFlowStepPlus(node1, state1, node2, preservesValue, t, callContext, label) and - localFlowExit(node2, state1) and - state1 = state2 - or - additionalLocalFlowStepNodeCand2(node1, state1, node2, state2, label) and - state1 != state2 and - preservesValue = false and - t = node2.getDataFlowType() and - callContext.relevantFor(node1.getEnclosingCallable()) and - not isUnreachableInCall1(node1, callContext) and - not isUnreachableInCall1(node2, callContext) - } - } - - private import LocalFlowBigStep - pragma[nomagic] private predicate castingNodeEx(NodeEx node) { node.asNode() instanceof CastingNode or exists(node.asParamReturnNode()) @@ -3274,6 +3763,31 @@ module MakeImpl Lang> { import CallContextSensitivity import NoLocalCallContext + private module BigStepInput implements PrevStage::LocalFlowBigStepInputSig { + bindingset[node1, state1] + bindingset[node2, state2] + predicate localStep( + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, + DataFlowType t, LocalCallContext lcc, string label + ) { + localStepNodeCand1(node1, node2, preservesValue, t, lcc, label) and + state1 = state2 + or + localStateStepNodeCand1(node1, state1, node2, state2, t, lcc, label) and + preservesValue = false + } + } + + additional predicate localFlowBigStep( + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, + DataFlowType t, LocalCallContext lcc, string label + ) { + PrevStage::LocalFlowBigStep::localFlowBigStep(node1, state1, node2, state2, + preservesValue, t, lcc, label) + } + + bindingset[node1, state1] + bindingset[node2, state2] predicate localStep( NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, LocalCc lcc, string label @@ -3309,6 +3823,9 @@ module MakeImpl Lang> { ) } + bindingset[node, ap, isStoreStep] + predicate stepFilter(NodeEx node, Ap ap, boolean isStoreStep) { any() } + bindingset[typ, contentType] predicate typecheckStore(Typ typ, DataFlowType contentType) { any() } } @@ -3365,7 +3882,7 @@ module MakeImpl Lang> { NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, LocalCc lcc, string label ) { - localFlowBigStep(node1, state1, node2, state2, preservesValue, t, _, label) and + Stage3Param::localFlowBigStep(node1, state1, node2, state2, preservesValue, t, _, label) and PrevStage::revFlow(node1, pragma[only_bind_into](state1), _) and PrevStage::revFlow(node2, pragma[only_bind_into](state2), _) and exists(lcc) @@ -3393,10 +3910,15 @@ module MakeImpl Lang> { private predicate clear(NodeEx node, Ap ap) { // When `node` is the target of a store, we interpret `clearsContent` as // only pertaining to _earlier_ store steps. In this case, we need to postpone - // checking `clearsContent` to the `pathStep` predicate + // checking `clearsContent` to the step creation. clearContent(node, ap.getHead(), false) } + pragma[nomagic] + private predicate clearExceptStore(NodeEx node, Ap ap) { + clearContent(node, ap.getHead(), true) + } + pragma[nomagic] private predicate expectsContentCand(NodeEx node, Ap ap) { exists(Content c | @@ -3419,6 +3941,11 @@ module MakeImpl Lang> { ) } + bindingset[node, ap, isStoreStep] + predicate stepFilter(NodeEx node, Ap ap, boolean isStoreStep) { + if clearExceptStore(node, ap) then isStoreStep = true else any() + } + bindingset[typ, contentType] predicate typecheckStore(Typ typ, DataFlowType contentType) { // We need to typecheck stores here, since reverse flow through a getter @@ -3429,18 +3956,6 @@ module MakeImpl Lang> { private module Stage4 = MkStage::Stage; - /** - * Holds if `argApf` is recorded as the summary context for flow reaching `node` - * and remains relevant for the following pruning stage. - */ - private predicate flowCandSummaryCtx(NodeEx node, FlowState state, AccessPathFront argApf) { - exists(AccessPathFront apf | - Stage4::revFlow(node, state, TReturnCtxMaybeFlowThrough(_), _, apf) and - Stage4::fwdFlow(node, state, any(Stage4::CcCall ccc), _, _, TAccessPathFrontSome(argApf), _, - apf, _) - ) - } - /** * Holds if a length 2 access path approximation with the head `c` is expected * to be expensive. @@ -3452,7 +3967,7 @@ module MakeImpl Lang> { strictcount(NodeEx n, FlowState state | Stage4::revFlow(n, state, any(AccessPathFrontHead apf | apf.getHead() = c)) or - flowCandSummaryCtx(n, state, any(AccessPathFrontHead apf | apf.getHead() = c)) + Stage4::nodeMayUseSummary(n, state, any(AccessPathFrontHead apf | apf.getHead() = c)) ) and accessPathApproxCostLimits(apLimit, tupleLimit) and apLimit < tails and @@ -3667,7 +4182,7 @@ module MakeImpl Lang> { NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, Typ t, LocalCc lcc, string label ) { - localFlowBigStep(node1, state1, node2, state2, preservesValue, t, lcc, label) and + Stage3Param::localFlowBigStep(node1, state1, node2, state2, preservesValue, t, lcc, label) and PrevStage::revFlow(node1, pragma[only_bind_into](state1), _) and PrevStage::revFlow(node2, pragma[only_bind_into](state2), _) } @@ -3679,6 +4194,16 @@ module MakeImpl Lang> { exists(ap) } + pragma[nomagic] + private predicate clearExceptStore(NodeEx node, Ap ap) { + Stage4Param::clearContent(node, ap.getHead(), true) + } + + bindingset[node, ap, isStoreStep] + predicate stepFilter(NodeEx node, Ap ap, boolean isStoreStep) { + if clearExceptStore(node, ap) then isStoreStep = true else any() + } + bindingset[typ, contentType] predicate typecheckStore(Typ typ, DataFlowType contentType) { compatibleTypesFilter(typ, contentType) @@ -3687,69 +4212,6 @@ module MakeImpl Lang> { private module Stage5 = MkStage::Stage; - pragma[nomagic] - private predicate nodeMayUseSummary0( - NodeEx n, ParamNodeEx p, FlowState state, AccessPathApprox apa - ) { - exists(AccessPathApprox apa0 | - Stage5::parameterMayFlowThrough(p, _) and - Stage5::revFlow(n, state, TReturnCtxMaybeFlowThrough(_), _, apa0) and - Stage5::fwdFlow(n, state, any(Stage5Param::CcCall ccc), TParamNodeSome(p.asNode()), _, - TAccessPathApproxSome(apa), _, apa0, _) - ) - } - - pragma[nomagic] - private predicate nodeMayUseSummary(NodeEx n, FlowState state, AccessPathApprox apa) { - exists(ParamNodeEx p | - Stage5::parameterMayFlowThrough(p, apa) and - nodeMayUseSummary0(n, p, state, apa) - ) - } - - private newtype TSummaryCtx = - TSummaryCtxNone() or - TSummaryCtxSome(ParamNodeEx p, FlowState state, DataFlowType t, AccessPath ap) { - exists(AccessPathApprox apa | ap.getApprox() = apa | - Stage5::parameterMayFlowThrough(p, apa) and - Stage5::fwdFlow(p, state, _, _, Option::some(t), _, _, apa, _) and - Stage5::revFlow(p, state, _) - ) - } - - /** - * A context for generating flow summaries. This represents flow entry through - * a specific parameter with an access path of a specific shape. - * - * Summaries are only created for parameters that may flow through. - */ - abstract private class SummaryCtx extends TSummaryCtx { - abstract string toString(); - } - - /** A summary context from which no flow summary can be generated. */ - private class SummaryCtxNone extends SummaryCtx, TSummaryCtxNone { - override string toString() { result = "" } - } - - /** A summary context from which a flow summary can be generated. */ - private class SummaryCtxSome extends SummaryCtx, TSummaryCtxSome { - private ParamNodeEx p; - private FlowState s; - private DataFlowType t; - private AccessPath ap; - - SummaryCtxSome() { this = TSummaryCtxSome(p, s, t, ap) } - - ParamNodeEx getParamNode() { result = p } - - private string ppTyp() { result = t.toString() and result != "" } - - override string toString() { result = p + concat(" : " + this.ppTyp()) + " " + ap } - - Location getLocation() { result = p.getLocation() } - } - pragma[nomagic] private predicate stage5ConsCand(Content c, DataFlowType t, AccessPathFront apf, int len) { Stage5::consCand(c, t, any(AccessPathApprox ap | ap.getFront() = apf and ap.len() = len - 1)) @@ -3769,7 +4231,7 @@ module MakeImpl Lang> { private int countNodesUsingAccessPath(AccessPathApprox apa) { result = strictcount(NodeEx n, FlowState state | - Stage5::revFlow(n, state, apa) or nodeMayUseSummary(n, state, apa) + Stage5::revFlow(n, state, apa) or Stage5::nodeMayUseSummary(n, state, apa) ) } @@ -3875,11 +4337,42 @@ module MakeImpl Lang> { ) } - private module PrunedCallContextSensitivityStage5 { - private module CallContextSensitivityInput implements CallContextSensitivityInputSig { - predicate relevantCallEdgeIn = Stage5::relevantCallEdgeIn/2; + private module Stage6Param implements MkStage::StageParam { + private module PrevStage = Stage5; - predicate relevantCallEdgeOut = Stage5::relevantCallEdgeOut/2; + class Typ = DataFlowType; + + class Ap = AccessPath; + + class ApNil = AccessPathNil; + + pragma[nomagic] + PrevStage::Ap getApprox(Ap ap) { result = ap.getApprox() } + + Typ getTyp(DataFlowType t) { result = t } + + bindingset[c, t, tail] + Ap apCons(Content c, Typ t, Ap tail) { result.isCons(c, t, tail) } + + class ApHeadContent = Content; + + pragma[noinline] + ApHeadContent getHeadContent(Ap ap) { result = ap.getHead() } + + ApHeadContent projectToHeadContent(Content c) { result = c } + + private module ApOption = Option; + + class ApOption = ApOption::Option; + + ApOption apNone() { result.isNone() } + + ApOption apSome(Ap ap) { result = ApOption::some(ap) } + + private module CallContextSensitivityInput implements CallContextSensitivityInputSig { + predicate relevantCallEdgeIn = PrevStage::relevantCallEdgeIn/2; + + predicate relevantCallEdgeOut = PrevStage::relevantCallEdgeOut/2; predicate reducedViableImplInCallContextCand = Stage5Param::reducedViableImplInCallContext/3; @@ -3889,47 +4382,45 @@ module MakeImpl Lang> { import CallContextSensitivity import LocalCallContext - } - private class CallContext = PrunedCallContextSensitivityStage5::Cc; - - private class CallContextCall = PrunedCallContextSensitivityStage5::CcCall; - - private class CallContextNoCall = PrunedCallContextSensitivityStage5::CcNoCall; - - private predicate callContextNone = PrunedCallContextSensitivityStage5::ccNone/0; - - private predicate callContextSomeCall = PrunedCallContextSensitivityStage5::ccSomeCall/0; - - private predicate sourceCallCtx(CallContext cc) { - if hasSourceCallCtx() then cc = callContextSomeCall() else cc = callContextNone() - } - - private newtype TPathNode = - TPathNodeMid( - NodeEx node, FlowState state, CallContext cc, SummaryCtx sc, DataFlowType t, AccessPath ap, - string summaryLabel - ) { - // A PathNode is introduced by a source ... - Stage5::revFlow(node, state) and - sourceNode(node, state) and - sourceCallCtx(cc) and - sc instanceof SummaryCtxNone and - t = node.getDataFlowType() and - ap = TAccessPathNil() and - summaryLabel = "-" - or - // ... or a step from an existing PathNode to another node. - pathStep(_, node, state, cc, sc, t, ap, summaryLabel, _) - } or - TPathNodeSink(NodeEx node, FlowState state) { - exists(PathNodeMid sink | - sink.isAtSink(_) and - node = sink.getNodeEx() and - state = sink.getState() - ) + private module BigStepInput implements PrevStage::LocalFlowBigStepInputSig { + predicate localStep( + NodeEx node1, FlowState state1, NodeEx node2, FlowState state2, boolean preservesValue, + DataFlowType t, LocalCallContext lcc, string label + ) { + Stage3Param::localFlowBigStep(node1, state1, node2, state2, preservesValue, t, lcc, label) and + PrevStage::revFlow(node1, pragma[only_bind_into](state1), _) and + PrevStage::revFlow(node2, pragma[only_bind_into](state2), _) + } } + predicate localStep = PrevStage::LocalFlowBigStep::localFlowBigStep/8; + + bindingset[node, state, t0, ap] + predicate filter(NodeEx node, FlowState state, Typ t0, Ap ap, Typ t) { + strengthenType(node, t0, t) and + exists(state) and + exists(ap) + } + + pragma[nomagic] + private predicate clearExceptStore(NodeEx node, Ap ap) { + Stage4Param::clearContent(node, ap.getHead(), true) + } + + bindingset[node, ap, isStoreStep] + predicate stepFilter(NodeEx node, Ap ap, boolean isStoreStep) { + if clearExceptStore(node, ap) then isStoreStep = true else any() + } + + bindingset[typ, contentType] + predicate typecheckStore(Typ typ, DataFlowType contentType) { + compatibleTypesFilter(typ, contentType) + } + } + + module Stage6 = MkStage::Stage; + /** * A list of `Content`s where nested tails are also paired with a * `DataFlowType`. If data flows from a source to a given node with a given @@ -3955,16 +4446,6 @@ module MakeImpl Lang> { /** Gets a textual representation of this access path. */ abstract string toString(); - - /** Holds if `node`, which is the target of a store step, clears data stored in this access path. */ - pragma[nomagic] - predicate storeTargetIsClearedAt(NodeEx node) { - exists(AccessPathApprox apa | - apa = this.getApprox() and - Stage5::revFlowAp(node, apa) and - Stage4Param::clearContent(node, apa.getHead(), true) - ) - } } private class AccessPathNil extends AccessPath, TAccessPathNil { @@ -4098,830 +4579,23 @@ module MakeImpl Lang> { } } - abstract private class PathNodeImpl extends TPathNode { - /** Gets the `FlowState` of this node. */ - abstract FlowState getState(); + private module S6Graph = Stage6::Graph; - /** Holds if this node is a source. */ - abstract predicate isSource(string model); + private module S6 = S6Graph::Public; - abstract PathNodeImpl getASuccessorImpl(string label); - - private PathNodeImpl getASuccessorIfHidden(string label) { - this.isHidden() and - result = this.getASuccessorImpl(label) - } - - private PathNodeImpl getASuccessorFromNonHidden(string label) { - result = this.getASuccessorImpl(label) and - not this.isHidden() - or - exists(string l1, string l2 | - result = this.getASuccessorFromNonHidden(l1).getASuccessorIfHidden(l2) and - label = mergeLabels(l1, l2) - ) - } - - final PathNodeImpl getANonHiddenSuccessor(string label) { - result = this.getASuccessorFromNonHidden(label) and not result.isHidden() - } - - abstract NodeEx getNodeEx(); - - predicate isHidden() { - not Config::includeHiddenNodes() and - ( - hiddenNode(this.getNodeEx().asNode()) and - not this.isSource(_) and - not this instanceof PathNodeSink - or - this.getNodeEx() instanceof TNodeImplicitRead - or - hiddenNode(this.getNodeEx().asParamReturnNode()) - ) - } - - predicate isFlowSource() { this.isSource(_) } - - predicate isFlowSink() { this instanceof PathNodeSink } - - private string ppType() { - this instanceof PathNodeSink and result = "" - or - exists(string t | t = this.(PathNodeMid).getType().toString() | - if t = "" then result = "" else result = " : " + t - ) - } - - private string ppAp() { - this instanceof PathNodeSink and result = "" - or - exists(string s | s = this.(PathNodeMid).getAp().toString() | - if s = "" then result = "" else result = " " + s - ) - } - - private string ppCtx() { - this instanceof PathNodeSink and result = "" - or - result = " <" + this.(PathNodeMid).getCallContext().toString() + ">" - } - - private string ppSummaryCtx() { - this instanceof PathNodeSink and result = "" - or - result = " <" + this.(PathNodeMid).getSummaryCtx().toString() + ">" - } - - /** Gets a textual representation of this element. */ - string toString() { result = this.getNodeEx().toString() + this.ppType() + this.ppAp() } - - /** - * Gets a textual representation of this element, including a textual - * representation of the call context. - */ - string toStringWithContext() { - result = - this.getNodeEx().toString() + this.ppType() + this.ppAp() + this.ppCtx() + - this.ppSummaryCtx() - } - - /** Gets the location of this node. */ - Location getLocation() { result = this.getNodeEx().getLocation() } - } - - /** Holds if `n` can reach a sink. */ - private predicate directReach(PathNodeImpl n) { - n instanceof PathNodeSink or - directReach(n.getANonHiddenSuccessor(_)) - } - - /** Holds if `n` can reach a sink or is used in a subpath that can reach a sink. */ - private predicate reach(PathNodeImpl n) { directReach(n) or Subpaths::retReach(n) } - - /** Holds if `n1.getASuccessor() = n2` and `n2` can reach a sink. */ - private predicate pathSucc(PathNodeImpl n1, PathNodeImpl n2) { - n1.getANonHiddenSuccessor(_) = n2 and directReach(n2) - } - - private predicate tcSrc(PathNodeImpl n) { n.isFlowSource() or n.isSource(_) } - - private predicate tcSink(PathNodeImpl n) { n.isFlowSink() or n instanceof PathNodeSink } - - private predicate pathSuccPlus(PathNodeImpl n1, PathNodeImpl n2) = - doublyBoundedFastTC(pathSucc/2, tcSrc/1, tcSink/1)(n1, n2) - - /** - * A `Node` augmented with a call context (except for sinks) and an access path. - * Only those `PathNode`s that are reachable from a source, and which can reach a sink, are generated. - */ - class PathNode instanceof PathNodeImpl { - PathNode() { reach(this) } - - /** Gets a textual representation of this element. */ - final string toString() { result = super.toString() } - - /** - * Gets a textual representation of this element, including a textual - * representation of the call context. - */ - final string toStringWithContext() { result = super.toStringWithContext() } - - /** Gets the location of this node. */ - Location getLocation() { result = super.getLocation() } - - /** - * Holds if this element is at the specified location. - * The location spans column `startcolumn` of line `startline` to - * column `endcolumn` of line `endline` in file `filepath`. - * For more information, see - * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). - */ - pragma[inline] - deprecated final predicate hasLocationInfo( - string filepath, int startline, int startcolumn, int endline, int endcolumn - ) { - this.getLocation().hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) - } - - /** Gets the underlying `Node`. */ - final Node getNode() { super.getNodeEx().projectToNode() = result } - - /** Gets the parameter node through which data is returned, if any. */ - final ParameterNode asParameterReturnNode() { result = super.getNodeEx().asParamReturnNode() } - - /** Gets the `FlowState` of this node. */ - final FlowState getState() { result = super.getState() } - - /** Gets a successor of this node, if any. */ - final PathNode getASuccessor() { result = super.getANonHiddenSuccessor(_) } - - /** Holds if this node is a source. */ - final predicate isSource() { super.isSource(_) } - - /** - * DEPRECATED: This functionality is no longer available. - * - * Holds if this node is a grouping of source nodes. - */ - deprecated final predicate isSourceGroup(string group) { none() } - - /** - * DEPRECATED: This functionality is no longer available. - * - * Holds if this node is a grouping of sink nodes. - */ - deprecated final predicate isSinkGroup(string group) { none() } - } - - /** - * Provides the query predicates needed to include a graph in a path-problem query. - */ - module PathGraph implements PathGraphSig { - /** Holds if `(a,b)` is an edge in the graph of data flow path explanations. */ - query predicate edges(PathNode a, PathNode b, string key, string val) { - a.(PathNodeImpl).getANonHiddenSuccessor(val) = b and - key = "provenance" - } - - /** Holds if `n` is a node in the graph of data flow path explanations. */ - query predicate nodes(PathNode n, string key, string val) { - key = "semmle.label" and val = n.toString() - } - - /** - * Holds if `(arg, par, ret, out)` forms a subpath-tuple, that is, flow through - * a subpath between `par` and `ret` with the connecting edges `arg -> par` and - * `ret -> out` is summarized as the edge `arg -> out`. - */ - query predicate subpaths(PathNode arg, PathNode par, PathNode ret, PathNode out) { - Subpaths::subpaths(arg, par, ret, out) - } - } - - /** - * An intermediate flow graph node. This is a tuple consisting of a `Node`, - * a `FlowState`, a `CallContext`, a `SummaryCtx`, and an `AccessPath`. - */ - private class PathNodeMid extends PathNodeImpl, TPathNodeMid { - NodeEx node; - FlowState state; - CallContext cc; - SummaryCtx sc; - DataFlowType t; - AccessPath ap; - string summaryLabel; - - PathNodeMid() { this = TPathNodeMid(node, state, cc, sc, t, ap, summaryLabel) } - - override NodeEx getNodeEx() { result = node } - - pragma[inline] - final NodeEx getNodeExOutgoing() { result = node and not outBarrier(node, state) } - - override FlowState getState() { result = state } - - CallContext getCallContext() { result = cc } - - SummaryCtx getSummaryCtx() { result = sc } - - DataFlowType getType() { result = t } - - AccessPath getAp() { result = ap } - - string getSummaryLabel() { result = summaryLabel } - - private PathNodeMid getSuccMid(string label) { - pathStep(this, result.getNodeEx(), result.getState(), result.getCallContext(), - result.getSummaryCtx(), result.getType(), result.getAp(), result.getSummaryLabel(), label) - } - - private predicate isSourceWithLabel(string labelprefix) { - exists(string model | - this.isSource(model) and - model != "" and - labelprefix = "Src:" + model + " " - ) - } - - override PathNodeImpl getASuccessorImpl(string label) { - // an intermediate step to another intermediate node - exists(string l2 | result = this.getSuccMid(l2) | - not this.isSourceWithLabel(_) and label = l2 - or - exists(string l1 | - this.isSourceWithLabel(l1) and - label = l1 + l2 - ) - ) - or - // a final step to a sink - exists(string l2, string sinkmodel | result = this.getSuccMid(l2).projectToSink(sinkmodel) | - not this.isSourceWithLabel(_) and - if sinkmodel != "" then label = l2 + " Sink:" + sinkmodel else label = l2 - or - exists(string l1 | - this.isSourceWithLabel(l1) and - if sinkmodel != "" then label = l1 + l2 + " Sink:" + sinkmodel else label = l1 + l2 - ) - ) - } - - override predicate isSource(string model) { - sourceNode(node, state) and - sourceModel(node, model) and - sourceCallCtx(cc) and - sc instanceof SummaryCtxNone and - t = node.getDataFlowType() and - ap = TAccessPathNil() - } - - predicate isAtSink(string model) { - sinkNode(node, state) and - sinkModel(node, model) and - ap instanceof AccessPathNil and - // For `FeatureHasSinkCallContext` the condition `cc instanceof CallContextNoCall` - // is exactly what we need to check. - // For `FeatureEqualSourceSinkCallContext` the initial call context was - // set to `CallContextSomeCall` and jumps are disallowed, so - // `cc instanceof CallContextNoCall` never holds. On the other hand, - // in this case there's never any need to enter a call except to identify - // a summary, so the condition in `pathIntoCallable` enforces this, which - // means that `sc instanceof SummaryCtxNone` holds if and only if we are - // in the call context of the source. - if Config::getAFeature() instanceof FeatureEqualSourceSinkCallContext - then sc instanceof SummaryCtxNone - else - if Config::getAFeature() instanceof FeatureHasSinkCallContext - then cc instanceof CallContextNoCall - else any() - } - - PathNodeSink projectToSink(string model) { - this.isAtSink(model) and - result.getNodeEx() = node and - result.getState() = state - } - } - - /** - * A flow graph node corresponding to a sink. This is disjoint from the - * intermediate nodes in order to uniquely correspond to a given sink by - * excluding the `CallContext`. - */ - private class PathNodeSink extends PathNodeImpl, TPathNodeSink { - NodeEx node; - FlowState state; - - PathNodeSink() { this = TPathNodeSink(node, state) } - - override NodeEx getNodeEx() { result = node } - - override FlowState getState() { result = state } - - override PathNodeImpl getASuccessorImpl(string label) { none() } - - override predicate isSource(string model) { - sourceNode(node, state) and sourceModel(node, model) - } - } - - private predicate pathNode( - PathNodeMid mid, NodeEx midnode, FlowState state, CallContext cc, SummaryCtx sc, - DataFlowType t, AccessPath ap, string summaryLabel, LocalCallContext localCC - ) { - midnode = mid.getNodeEx() and - state = mid.getState() and - cc = mid.getCallContext() and - sc = mid.getSummaryCtx() and - localCC = PrunedCallContextSensitivityStage5::getLocalCc(cc) and - t = mid.getType() and - ap = mid.getAp() and - summaryLabel = mid.getSummaryLabel() - } - - private predicate pathStep( - PathNodeMid mid, NodeEx node, FlowState state, CallContext cc, SummaryCtx sc, DataFlowType t, - AccessPath ap, string summaryLabel, string label - ) { - exists(DataFlowType t0, boolean isStoreStep | - pathStep0(mid, pragma[only_bind_into](node), pragma[only_bind_into](state), cc, sc, t0, ap, - isStoreStep, summaryLabel, label) and - Stage5::revFlow(pragma[only_bind_into](node), pragma[only_bind_into](state), ap.getApprox()) and - strengthenType(node, t0, t) and - not inBarrier(node, state) and - if ap.storeTargetIsClearedAt(node) then isStoreStep = true else any() - ) - } - - /** - * Holds if data may flow from `mid` to `node`. The last step in or out of - * a callable is recorded by `cc`. - */ - pragma[nomagic] - private predicate pathStep0( - PathNodeMid mid, NodeEx node, FlowState state, CallContext cc, SummaryCtx sc, DataFlowType t, - AccessPath ap, boolean isStoreStep, string summaryLabel, string label - ) { - exists(NodeEx midnode, FlowState state0, string sl, LocalCallContext localCC | - pathNode(mid, midnode, state0, cc, sc, t, ap, sl, localCC) and - localFlowBigStep(midnode, state0, node, state, true, _, localCC, label) and - isStoreStep = false and - summaryLabel = mergeLabels(sl, label) - ) - or - exists(NodeEx midnode, FlowState state0, string sl, LocalCallContext localCC | - pathNode(mid, midnode, state0, cc, sc, _, ap, sl, localCC) and - localFlowBigStep(midnode, state0, node, state, false, t, localCC, label) and - ap instanceof AccessPathNil and - isStoreStep = false and - summaryLabel = mergeLabels(sl, label) - ) - or - jumpStepEx(mid.getNodeExOutgoing(), node) and - state = mid.getState() and - cc = callContextNone() and - sc instanceof SummaryCtxNone and - t = mid.getType() and - ap = mid.getAp() and - isStoreStep = false and - summaryLabel = "-" and - label = "" - or - additionalJumpStep(mid.getNodeExOutgoing(), node, label) and - state = mid.getState() and - cc = callContextNone() and - sc instanceof SummaryCtxNone and - mid.getAp() instanceof AccessPathNil and - t = node.getDataFlowType() and - ap = TAccessPathNil() and - isStoreStep = false and - summaryLabel = "-" - or - additionalJumpStateStep(mid.getNodeExOutgoing(), mid.getState(), node, state) and - cc = callContextNone() and - sc instanceof SummaryCtxNone and - mid.getAp() instanceof AccessPathNil and - t = node.getDataFlowType() and - ap = TAccessPathNil() and - isStoreStep = false and - summaryLabel = "-" and - label = "Config" - or - exists(Content c, DataFlowType t0, AccessPath ap0 | - pathStoreStep(mid, node, state, t0, ap0, c, t, cc) and - ap.isCons(c, t0, ap0) and - sc = mid.getSummaryCtx() and - isStoreStep = true and - summaryLabel = mid.getSummaryLabel() and - label = "" - ) - or - exists(Content c, AccessPath ap0 | - pathReadStep(mid, node, state, ap0, c, cc) and - ap0.isCons(c, t, ap) and - sc = mid.getSummaryCtx() and - isStoreStep = false and - summaryLabel = mid.getSummaryLabel() and - label = "" - ) - or - pathIntoCallable(mid, node, state, _, cc, sc, _) and - t = mid.getType() and - ap = mid.getAp() and - isStoreStep = false and - (if sc instanceof SummaryCtxNone then summaryLabel = "-" else summaryLabel = "") and - label = "" - or - pathOutOfCallable(mid, node, state, cc) and - t = mid.getType() and - ap = mid.getAp() and - sc instanceof SummaryCtxNone and - isStoreStep = false and - summaryLabel = "-" and - label = "" - or - pathThroughCallable(mid, node, state, cc, t, ap, label) and - sc = mid.getSummaryCtx() and - isStoreStep = false and - summaryLabel = mergeLabels(mid.getSummaryLabel(), label) - } - - pragma[nomagic] - private predicate pathReadStep( - PathNodeMid mid, NodeEx node, FlowState state, AccessPath ap0, Content c, CallContext cc - ) { - ap0 = mid.getAp() and - c = ap0.getHead() and - Stage5::readStepCand(mid.getNodeExOutgoing(), c, node) and - state = mid.getState() and - cc = mid.getCallContext() - } - - pragma[nomagic] - private predicate pathStoreStep( - PathNodeMid mid, NodeEx node, FlowState state, DataFlowType t0, AccessPath ap0, Content c, - DataFlowType t, CallContext cc - ) { - exists(DataFlowType contentType | - t0 = mid.getType() and - ap0 = mid.getAp() and - Stage5::storeStepCand(mid.getNodeExOutgoing(), _, c, node, contentType, t) and - state = mid.getState() and - cc = mid.getCallContext() and - compatibleTypesFilter(t0, contentType) - ) - } - - private predicate pathOutOfCallable0( - PathNodeMid mid, ReturnPosition pos, FlowState state, CallContext innercc, - AccessPathApprox apa - ) { - exists(RetNodeEx retNode | - retNode = mid.getNodeEx() and - pos = retNode.getReturnPosition() and - state = mid.getState() and - not outBarrier(retNode, state) and - innercc = mid.getCallContext() and - innercc instanceof CallContextNoCall and - apa = mid.getAp().getApprox() and - not outBarrier(retNode, state) - ) - } - - pragma[nomagic] - private predicate pathOutOfCallable1( - PathNodeMid mid, DataFlowCall call, ReturnKindExt kind, FlowState state, CallContext cc, - AccessPathApprox apa - ) { - exists(ReturnPosition pos, DataFlowCallable c, CallContext innercc | - pathOutOfCallable0(mid, pos, state, innercc, apa) and - c = pos.getCallable() and - kind = pos.getKind() and - PrunedCallContextSensitivityStage5::resolveReturn(innercc, c, call) and - cc = PrunedCallContextSensitivityStage5::getCallContextReturn(c, call) - ) - } - - pragma[noinline] - private NodeEx getAnOutNodeFlow(ReturnKindExt kind, DataFlowCall call, AccessPathApprox apa) { - result.asNode() = kind.getAnOutNode(call) and - Stage5::revFlow(result, _, apa) - } - - /** - * Holds if data may flow from `mid` to `out`. The last step of this path - * is a return from a callable and is recorded by `cc`, if needed. - */ - pragma[noinline] - private predicate pathOutOfCallable(PathNodeMid mid, NodeEx out, FlowState state, CallContext cc) { - exists(ReturnKindExt kind, DataFlowCall call, AccessPathApprox apa | - pathOutOfCallable1(mid, call, kind, state, cc, apa) and - out = getAnOutNodeFlow(kind, call, apa) and - not inBarrier(out, state) - ) - } - - /** - * Holds if data may flow from `mid` to the `i`th argument of `call` in `cc`. - */ - pragma[noinline] - private predicate pathIntoArg( - PathNodeMid mid, ParameterPosition ppos, FlowState state, CallContext cc, DataFlowCall call, - DataFlowType t, AccessPath ap, AccessPathApprox apa - ) { - exists(ArgNodeEx arg, ArgumentPosition apos | - pathNode(mid, arg, state, cc, _, t, ap, _, _) and - not outBarrier(arg, state) and - arg.asNode().(ArgNode).argumentOf(call, apos) and - apa = ap.getApprox() and - parameterMatch(ppos, apos) - ) - } - - pragma[nomagic] - private predicate parameterCand( - DataFlowCallable callable, ParameterPosition pos, AccessPathApprox apa - ) { - exists(ParamNodeEx p | - Stage5::revFlow(p, _, apa) and - p.isParameterOf(callable, pos) - ) - } - - pragma[nomagic] - private predicate pathIntoCallable0( - PathNodeMid mid, DataFlowCallable callable, ParameterPosition pos, FlowState state, - CallContext outercc, DataFlowCall call, DataFlowType t, AccessPath ap - ) { - exists(AccessPathApprox apa | - pathIntoArg(mid, pragma[only_bind_into](pos), state, outercc, call, t, ap, - pragma[only_bind_into](apa)) and - callable = PrunedCallContextSensitivityStage5::resolveCall(call, outercc) and - parameterCand(callable, pragma[only_bind_into](pos), pragma[only_bind_into](apa)) - ) - } - - /** - * Holds if data may flow from `mid` to `p` through `call`. The contexts - * before and after entering the callable are `outercc` and `innercc`, - * respectively. - */ - pragma[nomagic] - private predicate pathIntoCallable( - PathNodeMid mid, ParamNodeEx p, FlowState state, CallContext outercc, CallContextCall innercc, - SummaryCtx sc, DataFlowCall call - ) { - exists(ParameterPosition pos, DataFlowCallable callable, DataFlowType t, AccessPath ap | - pathIntoCallable0(mid, callable, pos, state, outercc, call, t, ap) and - p.isParameterOf(callable, pos) and - not inBarrier(p, state) and - ( - sc = TSummaryCtxSome(p, state, t, ap) - or - not exists(TSummaryCtxSome(p, state, t, ap)) and - sc = TSummaryCtxNone() and - // When the call contexts of source and sink needs to match then there's - // never any reason to enter a callable except to find a summary. See also - // the comment in `PathNodeMid::isAtSink`. - not Config::getAFeature() instanceof FeatureEqualSourceSinkCallContext - ) and - innercc = PrunedCallContextSensitivityStage5::getCallContextCall(call, callable) - ) - } - - /** Holds if data may flow from a parameter given by `sc` to a return of kind `kind`. */ - pragma[nomagic] - private predicate paramFlowsThrough( - ReturnKindExt kind, FlowState state, CallContextCall cc, SummaryCtxSome sc, DataFlowType t, - AccessPath ap, AccessPathApprox apa, string summaryLabel - ) { - exists(RetNodeEx ret | - pathNode(_, ret, state, cc, sc, t, ap, summaryLabel, _) and - kind = ret.getKind() and - apa = ap.getApprox() and - parameterFlowThroughAllowed(sc.getParamNode(), kind) and - not outBarrier(ret, state) - ) - } - - pragma[nomagic] - private predicate pathThroughCallable0( - DataFlowCall call, PathNodeMid mid, ReturnKindExt kind, FlowState state, CallContext cc, - DataFlowType t, AccessPath ap, AccessPathApprox apa, string label - ) { - exists(CallContext innercc, SummaryCtx sc | - pathIntoCallable(mid, _, _, cc, innercc, sc, call) and - paramFlowsThrough(kind, state, innercc, sc, t, ap, apa, label) - ) - } - - /** - * Holds if data may flow from `mid` through a callable to the node `out`. - * The context `cc` is restored to its value prior to entering the callable. - */ - pragma[noinline] - private predicate pathThroughCallable( - PathNodeMid mid, NodeEx out, FlowState state, CallContext cc, DataFlowType t, AccessPath ap, - string label - ) { - exists(DataFlowCall call, ReturnKindExt kind, AccessPathApprox apa | - pathThroughCallable0(call, mid, kind, state, cc, t, ap, apa, label) and - out = getAnOutNodeFlow(kind, call, apa) - ) - } - - private module Subpaths { - /** - * Holds if `(arg, par, ret, out)` forms a subpath-tuple and `ret` is determined by - * `kind`, `sc`, `apout`, and `innercc`. - */ - pragma[nomagic] - private predicate subpaths01( - PathNodeImpl arg, ParamNodeEx par, SummaryCtxSome sc, CallContext innercc, - ReturnKindExt kind, NodeEx out, FlowState sout, DataFlowType t, AccessPath apout - ) { - pathThroughCallable(arg, out, pragma[only_bind_into](sout), _, pragma[only_bind_into](t), - pragma[only_bind_into](apout), _) and - pathIntoCallable(arg, par, _, _, innercc, sc, _) and - paramFlowsThrough(kind, pragma[only_bind_into](sout), innercc, sc, - pragma[only_bind_into](t), pragma[only_bind_into](apout), _, _) - } - - /** - * Holds if `(arg, par, ret, out)` forms a subpath-tuple and `ret` is determined by - * `kind`, `sc`, `sout`, `apout`, and `innercc`. - */ - pragma[nomagic] - private predicate subpaths02( - PathNodeImpl arg, ParamNodeEx par, SummaryCtxSome sc, CallContext innercc, - ReturnKindExt kind, NodeEx out, FlowState sout, DataFlowType t, AccessPath apout - ) { - subpaths01(arg, par, sc, innercc, kind, out, sout, t, apout) and - out.asNode() = kind.getAnOutNode(_) - } - - /** - * Holds if `(arg, par, ret, out)` forms a subpath-tuple. - */ - pragma[nomagic] - private predicate subpaths03( - PathNodeImpl arg, ParamNodeEx par, PathNodeMid ret, NodeEx out, FlowState sout, - DataFlowType t, AccessPath apout - ) { - exists(SummaryCtxSome sc, CallContext innercc, ReturnKindExt kind, RetNodeEx retnode | - subpaths02(arg, par, sc, innercc, kind, out, sout, t, apout) and - pathNode(ret, retnode, sout, innercc, sc, t, apout, _, _) and - kind = retnode.getKind() - ) - } - - private PathNodeImpl localStep(PathNodeImpl n) { - n.getASuccessorImpl(_) = result and - exists(NodeEx n1, NodeEx n2 | n1 = n.getNodeEx() and n2 = result.getNodeEx() | - localFlowBigStep(n1, _, n2, _, _, _, _, _) or - storeEx(n1, _, n2, _, _) or - readSetEx(n1, _, n2) - ) - } - - private PathNodeImpl summaryCtxStep(PathNodeImpl n) { - n.getASuccessorImpl(_) = result and - exists(SummaryCtxSome sc | - pathNode(n, _, _, _, pragma[only_bind_into](sc), _, _, _, _) and - pathNode(result, _, _, _, pragma[only_bind_into](sc), _, _, _, _) - ) - } - - private predicate localStepToHidden(PathNodeImpl n1, PathNodeImpl n2) { - n2 = localStep(n1) and - n2.isHidden() - } - - private predicate localStepFromHidden(PathNodeImpl n1, PathNodeImpl n2) { - n2 = localStep(n1) and - n1.isHidden() - } - - pragma[nomagic] - private predicate hasSuccessor(PathNodeImpl pred, PathNodeMid succ, NodeEx succNode) { - succ = pred.getASuccessorImpl(_) and - succNode = succ.getNodeEx() - } - - /** - * Holds if `(arg, par, ret, out)` forms a subpath-tuple. - * - * All of the nodes may be hidden. - */ - pragma[nomagic] - private predicate subpaths04( - PathNodeImpl arg, PathNodeImpl par, PathNodeImpl ret, PathNodeImpl out - ) { - exists( - ParamNodeEx p, NodeEx o, FlowState sout, DataFlowType t0, DataFlowType t, - AccessPath apout, PathNodeMid out0 - | - pragma[only_bind_into](arg).getASuccessorImpl(_) = pragma[only_bind_into](out0) and - subpaths03(pragma[only_bind_into](arg), p, ret, o, sout, t0, apout) and - hasSuccessor(pragma[only_bind_into](arg), par, p) and - strengthenType(o, t0, t) and - pathNode(out0, o, sout, _, _, t, apout, _, _) - | - out = out0 or out = out0.projectToSink(_) - ) - } - - bindingset[par, ret] - pragma[inline_late] - private predicate summaryCtxStepStar(PathNodeImpl par, PathNodeImpl ret) { - summaryCtxStep*(par) = ret - } - - /** - * Holds if `(arg, par, ret, out)` forms a subpath-tuple. - * - * `par` and `ret` are not hidden. - */ - pragma[nomagic] - private predicate subpaths05( - PathNodeImpl arg, PathNodeImpl par, PathNodeImpl ret, PathNodeImpl out - ) { - // direct subpath - subpaths04(arg, any(PathNodeImpl n | localStepFromHidden*(n, par)), - any(PathNodeImpl n | localStepToHidden*(ret, n)), out) and - not par.isHidden() and - not ret.isHidden() and - summaryCtxStepStar(par, ret) - or - // wrapped subpath using hidden nodes, e.g. flow through a callback inside - // a summarized callable - exists(PathNodeImpl par0, PathNodeImpl ret0 | - subpaths05(any(PathNodeImpl n | localStepToHidden*(par0, n)), par, ret, - any(PathNodeImpl n | localStepFromHidden*(n, ret0))) and - subpaths04(arg, par0, ret0, out) - ) - } - - /** - * Holds if `(arg, par, ret, out)` forms a subpath-tuple, that is, flow through - * a subpath between `par` and `ret` with the connecting edges `arg -> par` and - * `ret -> out` is summarized as the edge `arg -> out`. - * - * None of the nodes are hidden. - */ - pragma[nomagic] - predicate subpaths(PathNodeImpl arg, PathNodeImpl par, PathNodeImpl ret, PathNodeImpl out) { - subpaths05(any(PathNodeImpl n | localStepToHidden*(arg, n)), par, ret, - any(PathNodeImpl n | localStepFromHidden*(n, out))) and - not arg.isHidden() and - not out.isHidden() - } - - /** - * Holds if `n` can reach a return node in a summarized subpath that can reach a sink. - */ - predicate retReach(PathNodeImpl n) { - exists(PathNodeImpl out | subpaths(_, _, n, out) | directReach(out) or retReach(out)) - or - exists(PathNodeImpl mid | - retReach(mid) and - n.getANonHiddenSuccessor(_) = mid and - not subpaths(_, mid, _, _) - ) - } - } - - /** - * Holds if data can flow from `source` to `sink`. - * - * The corresponding paths are generated from the end-points and the graph - * included in the module `PathGraph`. - */ - predicate flowPath(PathNode source, PathNode sink) { - exists(PathNodeImpl flowsource, PathNodeImpl flowsink | - source = flowsource and sink = flowsink - | - flowsource.isFlowSource() and - (flowsource = flowsink or pathSuccPlus(flowsource, flowsink)) and - flowsink.isFlowSink() - ) - } + import S6 /** DEPRECATED: Use `flowPath` instead. */ deprecated predicate hasFlowPath = flowPath/2; - private predicate flowsTo(PathNodeImpl flowsource, PathNodeSink flowsink, Node source, Node sink) { - flowsource.isSource(_) and - flowsource.getNodeEx().asNode() = source and - (flowsource = flowsink or pathSuccPlus(flowsource, flowsink)) and - flowsink.getNodeEx().asNode() = sink - } - /** * Holds if data can flow from `source` to `sink`. */ - predicate flow(Node source, Node sink) { flowsTo(_, _, source, sink) } + predicate flow(Node source, Node sink) { + exists(PathNode source0, PathNode sink0 | + flowPath(source0, sink0) and source0.getNode() = source and sink0.getNode() = sink + ) + } /** DEPRECATED: Use `flow` instead. */ deprecated predicate hasFlow = flow/2; @@ -4929,7 +4603,7 @@ module MakeImpl Lang> { /** * Holds if data can flow from some source to `sink`. */ - predicate flowTo(Node sink) { sink = any(PathNodeSink n).getNodeEx().asNode() } + predicate flowTo(Node sink) { exists(PathNode n | n.isSink() and n.getNode() = sink) } /** DEPRECATED: Use `flowTo` instead. */ deprecated predicate hasFlowTo = flowTo/1; @@ -4942,24 +4616,6 @@ module MakeImpl Lang> { /** DEPRECATED: Use `flowToExpr` instead. */ deprecated predicate hasFlowToExpr = flowToExpr/1; - private predicate finalStats( - boolean fwd, int nodes, int fields, int conscand, int states, int tuples - ) { - fwd = true and - nodes = count(NodeEx n0 | exists(PathNodeImpl pn | pn.getNodeEx() = n0)) and - fields = count(Content f0 | exists(PathNodeMid pn | pn.getAp().getHead() = f0)) and - conscand = count(AccessPath ap | exists(PathNodeMid pn | pn.getAp() = ap)) and - states = count(FlowState state | exists(PathNodeMid pn | pn.getState() = state)) and - tuples = count(PathNodeImpl pn) - or - fwd = false and - nodes = count(NodeEx n0 | exists(PathNodeImpl pn | pn.getNodeEx() = n0 and reach(pn))) and - fields = count(Content f0 | exists(PathNodeMid pn | pn.getAp().getHead() = f0 and reach(pn))) and - conscand = count(AccessPath ap | exists(PathNodeMid pn | pn.getAp() = ap and reach(pn))) and - states = count(FlowState state | exists(PathNodeMid pn | pn.getState() = state and reach(pn))) and - tuples = count(PathNode pn) - } - /** * INTERNAL: Only for debugging. * @@ -5074,17 +4730,11 @@ module MakeImpl Lang> { or stage = "6 Fwd" and n = 60 and - finalStats(true, nodes, fields, conscand, states, tuples) and - calledges = -1 and - tfnodes = -1 and - tftuples = -1 + Stage6::stats(true, nodes, fields, conscand, states, tuples, calledges, tfnodes, tftuples) or stage = "6 Rev" and n = 65 and - finalStats(false, nodes, fields, conscand, states, tuples) and - calledges = -1 and - tfnodes = -1 and - tftuples = -1 + Stage6::stats(false, nodes, fields, conscand, states, tuples, calledges, tfnodes, tftuples) } } @@ -5250,7 +4900,7 @@ module MakeImpl Lang> { private predicate revSinkNode(NodeEx node, FlowState state) { sinkNodeWithState(node, state) or - Config::isSink(node.asNode()) and + Config::isSink(node.asNodeOrImplicitRead()) and relevantState(state) and not fullBarrier(node) and not stateBarrier(node, state) diff --git a/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll b/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll index 434fca9c995..8a82c7b570c 100644 --- a/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll +++ b/shared/dataflow/codeql/dataflow/internal/DataFlowImplCommon.qll @@ -1569,11 +1569,6 @@ module MakeImplCommon Lang> { TDataFlowCallNone() or TDataFlowCallSome(DataFlowCall call) - cached - newtype TParamNodeOption = - TParamNodeNone() or - TParamNodeSome(ParamNode p) - cached newtype TReturnCtx = TReturnCtxNone() or @@ -2234,19 +2229,6 @@ module MakeImplCommon Lang> { } } - /** An optional `ParamNode`. */ - class ParamNodeOption extends TParamNodeOption { - string toString() { - this = TParamNodeNone() and - result = "(none)" - or - exists(ParamNode p | - this = TParamNodeSome(p) and - result = p.toString() - ) - } - } - /** * A return context used to calculate flow summaries in reverse flow. * diff --git a/shared/dataflow/qlpack.yml b/shared/dataflow/qlpack.yml index 6bc83bb5164..63fa78dc872 100644 --- a/shared/dataflow/qlpack.yml +++ b/shared/dataflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/dataflow -version: 1.0.6-dev +version: 1.1.1-dev groups: shared library: true dependencies: diff --git a/shared/mad/CHANGELOG.md b/shared/mad/CHANGELOG.md index 0bf218b9656..0a7df5106a1 100644 --- a/shared/mad/CHANGELOG.md +++ b/shared/mad/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.6 + +No user-facing changes. + ## 1.0.5 No user-facing changes. diff --git a/shared/mad/change-notes/released/1.0.6.md b/shared/mad/change-notes/released/1.0.6.md new file mode 100644 index 00000000000..e5e80a3b3f1 --- /dev/null +++ b/shared/mad/change-notes/released/1.0.6.md @@ -0,0 +1,3 @@ +## 1.0.6 + +No user-facing changes. diff --git a/shared/mad/codeql-pack.release.yml b/shared/mad/codeql-pack.release.yml index 42da17b3841..8033d980afa 100644 --- a/shared/mad/codeql-pack.release.yml +++ b/shared/mad/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.5 +lastReleaseVersion: 1.0.6 diff --git a/shared/mad/codeql/mad/modelgenerator/ModelPrinting.qll b/shared/mad/codeql/mad/modelgenerator/ModelPrinting.qll index 59d2b2216da..2867d927984 100644 --- a/shared/mad/codeql/mad/modelgenerator/ModelPrinting.qll +++ b/shared/mad/codeql/mad/modelgenerator/ModelPrinting.qll @@ -97,6 +97,18 @@ module ModelPrintingImpl { result = asSummaryModel(api, input, output, "taint") } + /** + * Gets the summary model for `api` with `input` and `output`. + */ + bindingset[input, output, preservesValue] + string asModel(Printing::SummaryApi api, string input, string output, boolean preservesValue) { + preservesValue = true and + result = asValueModel(api, input, output) + or + preservesValue = false and + result = asTaintModel(api, input, output) + } + /** * Gets the sink model for `api` with `input` and `kind`. */ diff --git a/shared/mad/qlpack.yml b/shared/mad/qlpack.yml index 8568e62a12b..6654580da12 100644 --- a/shared/mad/qlpack.yml +++ b/shared/mad/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/mad -version: 1.0.6-dev +version: 1.0.7-dev groups: shared library: true dependencies: diff --git a/shared/rangeanalysis/CHANGELOG.md b/shared/rangeanalysis/CHANGELOG.md index f445578246d..efa13cf50bc 100644 --- a/shared/rangeanalysis/CHANGELOG.md +++ b/shared/rangeanalysis/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.6 + +No user-facing changes. + ## 1.0.5 No user-facing changes. diff --git a/shared/rangeanalysis/change-notes/released/1.0.6.md b/shared/rangeanalysis/change-notes/released/1.0.6.md new file mode 100644 index 00000000000..e5e80a3b3f1 --- /dev/null +++ b/shared/rangeanalysis/change-notes/released/1.0.6.md @@ -0,0 +1,3 @@ +## 1.0.6 + +No user-facing changes. diff --git a/shared/rangeanalysis/codeql-pack.release.yml b/shared/rangeanalysis/codeql-pack.release.yml index 42da17b3841..8033d980afa 100644 --- a/shared/rangeanalysis/codeql-pack.release.yml +++ b/shared/rangeanalysis/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.5 +lastReleaseVersion: 1.0.6 diff --git a/shared/rangeanalysis/qlpack.yml b/shared/rangeanalysis/qlpack.yml index 4a9285c82ec..1015269eeb4 100644 --- a/shared/rangeanalysis/qlpack.yml +++ b/shared/rangeanalysis/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/rangeanalysis -version: 1.0.6-dev +version: 1.0.7-dev groups: shared library: true dependencies: diff --git a/shared/regex/CHANGELOG.md b/shared/regex/CHANGELOG.md index 78f8369e739..92db438ed2f 100644 --- a/shared/regex/CHANGELOG.md +++ b/shared/regex/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.6 + +No user-facing changes. + ## 1.0.5 No user-facing changes. diff --git a/shared/regex/change-notes/released/1.0.6.md b/shared/regex/change-notes/released/1.0.6.md new file mode 100644 index 00000000000..e5e80a3b3f1 --- /dev/null +++ b/shared/regex/change-notes/released/1.0.6.md @@ -0,0 +1,3 @@ +## 1.0.6 + +No user-facing changes. diff --git a/shared/regex/codeql-pack.release.yml b/shared/regex/codeql-pack.release.yml index 42da17b3841..8033d980afa 100644 --- a/shared/regex/codeql-pack.release.yml +++ b/shared/regex/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.5 +lastReleaseVersion: 1.0.6 diff --git a/shared/regex/qlpack.yml b/shared/regex/qlpack.yml index 39a0ce40768..6bb3b9c3551 100644 --- a/shared/regex/qlpack.yml +++ b/shared/regex/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/regex -version: 1.0.6-dev +version: 1.0.7-dev groups: shared library: true dependencies: diff --git a/shared/ssa/CHANGELOG.md b/shared/ssa/CHANGELOG.md index f41fc9a7fe7..27b5d839dc1 100644 --- a/shared/ssa/CHANGELOG.md +++ b/shared/ssa/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.6 + +No user-facing changes. + ## 1.0.5 No user-facing changes. diff --git a/shared/ssa/change-notes/released/1.0.6.md b/shared/ssa/change-notes/released/1.0.6.md new file mode 100644 index 00000000000..e5e80a3b3f1 --- /dev/null +++ b/shared/ssa/change-notes/released/1.0.6.md @@ -0,0 +1,3 @@ +## 1.0.6 + +No user-facing changes. diff --git a/shared/ssa/codeql-pack.release.yml b/shared/ssa/codeql-pack.release.yml index 42da17b3841..8033d980afa 100644 --- a/shared/ssa/codeql-pack.release.yml +++ b/shared/ssa/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.5 +lastReleaseVersion: 1.0.6 diff --git a/shared/ssa/qlpack.yml b/shared/ssa/qlpack.yml index ef726856cfb..0f48f8dfb6d 100644 --- a/shared/ssa/qlpack.yml +++ b/shared/ssa/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/ssa -version: 1.0.6-dev +version: 1.0.7-dev groups: shared library: true dependencies: diff --git a/shared/threat-models/CHANGELOG.md b/shared/threat-models/CHANGELOG.md index 2e7162889c3..6976ee14e27 100644 --- a/shared/threat-models/CHANGELOG.md +++ b/shared/threat-models/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.6 + +No user-facing changes. + ## 1.0.5 No user-facing changes. diff --git a/shared/threat-models/change-notes/released/1.0.6.md b/shared/threat-models/change-notes/released/1.0.6.md new file mode 100644 index 00000000000..e5e80a3b3f1 --- /dev/null +++ b/shared/threat-models/change-notes/released/1.0.6.md @@ -0,0 +1,3 @@ +## 1.0.6 + +No user-facing changes. diff --git a/shared/threat-models/codeql-pack.release.yml b/shared/threat-models/codeql-pack.release.yml index 42da17b3841..8033d980afa 100644 --- a/shared/threat-models/codeql-pack.release.yml +++ b/shared/threat-models/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.5 +lastReleaseVersion: 1.0.6 diff --git a/shared/threat-models/qlpack.yml b/shared/threat-models/qlpack.yml index aa7f4f989fd..fc01f5d5556 100644 --- a/shared/threat-models/qlpack.yml +++ b/shared/threat-models/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/threat-models -version: 1.0.6-dev +version: 1.0.7-dev library: true groups: shared dataExtensions: diff --git a/shared/tree-sitter-extractor/Cargo.toml b/shared/tree-sitter-extractor/Cargo.toml index d51d64a3349..d7d1e0f37ab 100644 --- a/shared/tree-sitter-extractor/Cargo.toml +++ b/shared/tree-sitter-extractor/Cargo.toml @@ -7,7 +7,7 @@ authors = ["GitHub"] [dependencies] flate2 = "1.0" globset = "0.4" -tree-sitter = ">= 0.22.6" +tree-sitter = ">= 0.23.0" tracing = "0.1" tracing-subscriber = { version = "0.3.3", features = ["env-filter"] } rayon = "1.5.0" @@ -24,5 +24,3 @@ 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/shared/tree-sitter-extractor/src/extractor/mod.rs b/shared/tree-sitter-extractor/src/extractor/mod.rs index 067239de002..4b0d0643d9d 100644 --- a/shared/tree-sitter-extractor/src/extractor/mod.rs +++ b/shared/tree-sitter-extractor/src/extractor/mod.rs @@ -76,8 +76,8 @@ pub fn populate_empty_location(writer: &mut trap::Writer) { let file_label = populate_empty_file(writer); let loc_label = global_location( writer, - file_label, trap::Location { + file_label, start_line: 0, start_column: 0, end_line: 0, @@ -127,14 +127,10 @@ pub fn populate_parent_folders( } /** Get the label for the given location, defining it a global ID if it doesn't exist yet. */ -fn global_location( - writer: &mut trap::Writer, - file_label: trap::Label, - location: trap::Location, -) -> trap::Label { +fn global_location(writer: &mut trap::Writer, location: trap::Location) -> trap::Label { let (loc_label, fresh) = writer.global_id(&format!( "loc,{{{}}},{},{},{},{}", - file_label, + location.file_label, location.start_line, location.start_column, location.end_line, @@ -145,7 +141,7 @@ fn global_location( "locations_default", vec![ trap::Arg::Label(loc_label), - trap::Arg::Label(file_label), + trap::Arg::Label(location.file_label), trap::Arg::Int(location.start_line), trap::Arg::Int(location.start_column), trap::Arg::Int(location.end_line), @@ -158,18 +154,14 @@ fn global_location( /** Get the label for the given location, creating it as a fresh ID if we haven't seen the location * yet for this file. */ -fn location_label( - writer: &mut trap::Writer, - file_label: trap::Label, - location: trap::Location, -) -> trap::Label { +fn location_label(writer: &mut trap::Writer, location: trap::Location) -> trap::Label { let (loc_label, fresh) = writer.location_label(location); if fresh { writer.add_tuple( "locations_default", vec![ trap::Arg::Label(loc_label), - trap::Arg::Label(file_label), + trap::Arg::Label(location.file_label), trap::Arg::Int(location.start_line), trap::Arg::Int(location.start_column), trap::Arg::Int(location.end_line), @@ -312,8 +304,8 @@ impl<'a> Visitor<'a> { node: Node, status_page: bool, ) { - let loc = location_for(self, node); - let loc_label = location_label(self.trap_writer, self.file_label, loc); + let loc = location_for(self, self.file_label, node); + let loc_label = location_label(self.trap_writer, loc); let mut mesg = self.diagnostics_writer.new_entry( "parse-error", "Could not process some files due to syntax errors", @@ -364,8 +356,8 @@ impl<'a> Visitor<'a> { return; } let (id, _, child_nodes) = self.stack.pop().expect("Vistor: empty stack"); - let loc = location_for(self, node); - let loc_label = location_label(self.trap_writer, self.file_label, loc); + let loc = location_for(self, self.file_label, node); + let loc_label = location_label(self.trap_writer, loc); let table = self .schema .get(&TypeName { @@ -627,7 +619,7 @@ fn sliced_source_arg(source: &[u8], n: Node) -> trap::Arg { // Emit a pair of `TrapEntry`s for the provided node, appropriately calibrated. // The first is the location and label definition, and the second is the // 'Located' entry. -fn location_for(visitor: &mut Visitor, n: Node) -> trap::Location { +fn location_for(visitor: &mut Visitor, file_label: trap::Label, n: Node) -> trap::Location { // Tree-sitter row, column values are 0-based while CodeQL starts // counting at 1. In addition Tree-sitter's row and column for the // end position are exclusive while CodeQL's end positions are inclusive. @@ -685,6 +677,7 @@ fn location_for(visitor: &mut Visitor, n: Node) -> trap::Location { } } trap::Location { + file_label, start_line, start_column, end_line, diff --git a/shared/tree-sitter-extractor/src/trap.rs b/shared/tree-sitter-extractor/src/trap.rs index 64c06539ecb..32b33d340c5 100644 --- a/shared/tree-sitter-extractor/src/trap.rs +++ b/shared/tree-sitter-extractor/src/trap.rs @@ -7,6 +7,7 @@ use flate2::write::GzEncoder; #[derive(Clone, Copy, Eq, PartialEq, PartialOrd, Ord, Hash)] pub struct Location { + pub file_label: Label, pub start_line: usize, pub start_column: usize, pub end_line: usize, @@ -136,7 +137,7 @@ impl fmt::Display for Entry { } } -#[derive(Debug, Copy, Clone)] +#[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Ord, PartialOrd)] // Identifiers of the form #0, #1... pub struct Label(u32); diff --git a/shared/tree-sitter-extractor/tests/integration_test.rs b/shared/tree-sitter-extractor/tests/integration_test.rs index 29058016764..cc453eeef74 100644 --- a/shared/tree-sitter-extractor/tests/integration_test.rs +++ b/shared/tree-sitter-extractor/tests/integration_test.rs @@ -13,7 +13,7 @@ use common::{create_source_dir, expect_trap_file, SourceArchive}; fn simple_extractor() { let language = 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!["*.qll".into()], }; diff --git a/shared/tree-sitter-extractor/tests/multiple_languages.rs b/shared/tree-sitter-extractor/tests/multiple_languages.rs index 12a505f0170..f14100f6e0c 100644 --- a/shared/tree-sitter-extractor/tests/multiple_languages.rs +++ b/shared/tree-sitter-extractor/tests/multiple_languages.rs @@ -12,13 +12,13 @@ use common::{create_source_dir, expect_trap_file, SourceArchive}; fn multiple_language_extractor() { let lang_ql = 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!["*.qll".into()], }; let lang_json = 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(), "*Jsonfile".into()], }; diff --git a/shared/tutorial/CHANGELOG.md b/shared/tutorial/CHANGELOG.md index f20cfe347d7..a1da8419af7 100644 --- a/shared/tutorial/CHANGELOG.md +++ b/shared/tutorial/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.6 + +No user-facing changes. + ## 1.0.5 No user-facing changes. diff --git a/shared/tutorial/change-notes/released/1.0.6.md b/shared/tutorial/change-notes/released/1.0.6.md new file mode 100644 index 00000000000..e5e80a3b3f1 --- /dev/null +++ b/shared/tutorial/change-notes/released/1.0.6.md @@ -0,0 +1,3 @@ +## 1.0.6 + +No user-facing changes. diff --git a/shared/tutorial/codeql-pack.release.yml b/shared/tutorial/codeql-pack.release.yml index 42da17b3841..8033d980afa 100644 --- a/shared/tutorial/codeql-pack.release.yml +++ b/shared/tutorial/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.5 +lastReleaseVersion: 1.0.6 diff --git a/shared/tutorial/qlpack.yml b/shared/tutorial/qlpack.yml index e0516acd41d..bbba5576202 100644 --- a/shared/tutorial/qlpack.yml +++ b/shared/tutorial/qlpack.yml @@ -1,7 +1,7 @@ name: codeql/tutorial description: Library for the CodeQL detective tutorials, helping new users learn to write CodeQL queries. -version: 1.0.6-dev +version: 1.0.7-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/typeflow/CHANGELOG.md b/shared/typeflow/CHANGELOG.md index 7ba137cbf53..9eedb855a5a 100644 --- a/shared/typeflow/CHANGELOG.md +++ b/shared/typeflow/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.6 + +No user-facing changes. + ## 1.0.5 No user-facing changes. diff --git a/shared/typeflow/change-notes/released/1.0.6.md b/shared/typeflow/change-notes/released/1.0.6.md new file mode 100644 index 00000000000..e5e80a3b3f1 --- /dev/null +++ b/shared/typeflow/change-notes/released/1.0.6.md @@ -0,0 +1,3 @@ +## 1.0.6 + +No user-facing changes. diff --git a/shared/typeflow/codeql-pack.release.yml b/shared/typeflow/codeql-pack.release.yml index 42da17b3841..8033d980afa 100644 --- a/shared/typeflow/codeql-pack.release.yml +++ b/shared/typeflow/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.5 +lastReleaseVersion: 1.0.6 diff --git a/shared/typeflow/qlpack.yml b/shared/typeflow/qlpack.yml index 0681ba51825..99dd1a1057e 100644 --- a/shared/typeflow/qlpack.yml +++ b/shared/typeflow/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typeflow -version: 1.0.6-dev +version: 1.0.7-dev groups: shared library: true dependencies: diff --git a/shared/typetracking/CHANGELOG.md b/shared/typetracking/CHANGELOG.md index 77d9b6f4fcf..712c3146f53 100644 --- a/shared/typetracking/CHANGELOG.md +++ b/shared/typetracking/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.6 + +No user-facing changes. + ## 1.0.5 No user-facing changes. diff --git a/shared/typetracking/change-notes/released/1.0.6.md b/shared/typetracking/change-notes/released/1.0.6.md new file mode 100644 index 00000000000..e5e80a3b3f1 --- /dev/null +++ b/shared/typetracking/change-notes/released/1.0.6.md @@ -0,0 +1,3 @@ +## 1.0.6 + +No user-facing changes. diff --git a/shared/typetracking/codeql-pack.release.yml b/shared/typetracking/codeql-pack.release.yml index 42da17b3841..8033d980afa 100644 --- a/shared/typetracking/codeql-pack.release.yml +++ b/shared/typetracking/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.5 +lastReleaseVersion: 1.0.6 diff --git a/shared/typetracking/qlpack.yml b/shared/typetracking/qlpack.yml index da304ceb020..aeb3a45bff3 100644 --- a/shared/typetracking/qlpack.yml +++ b/shared/typetracking/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typetracking -version: 1.0.6-dev +version: 1.0.7-dev groups: shared library: true dependencies: diff --git a/shared/typos/CHANGELOG.md b/shared/typos/CHANGELOG.md index f8ac1347b0f..968e737bdc4 100644 --- a/shared/typos/CHANGELOG.md +++ b/shared/typos/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.6 + +No user-facing changes. + ## 1.0.5 No user-facing changes. diff --git a/shared/typos/change-notes/released/1.0.6.md b/shared/typos/change-notes/released/1.0.6.md new file mode 100644 index 00000000000..e5e80a3b3f1 --- /dev/null +++ b/shared/typos/change-notes/released/1.0.6.md @@ -0,0 +1,3 @@ +## 1.0.6 + +No user-facing changes. diff --git a/shared/typos/codeql-pack.release.yml b/shared/typos/codeql-pack.release.yml index 42da17b3841..8033d980afa 100644 --- a/shared/typos/codeql-pack.release.yml +++ b/shared/typos/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.5 +lastReleaseVersion: 1.0.6 diff --git a/shared/typos/qlpack.yml b/shared/typos/qlpack.yml index bc581f54edf..ded7cbb17ea 100644 --- a/shared/typos/qlpack.yml +++ b/shared/typos/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/typos -version: 1.0.6-dev +version: 1.0.7-dev groups: shared library: true warnOnImplicitThis: true diff --git a/shared/util/CHANGELOG.md b/shared/util/CHANGELOG.md index e44386743ad..d316357e039 100644 --- a/shared/util/CHANGELOG.md +++ b/shared/util/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.6 + +No user-facing changes. + ## 1.0.5 No user-facing changes. diff --git a/shared/util/change-notes/released/1.0.6.md b/shared/util/change-notes/released/1.0.6.md new file mode 100644 index 00000000000..e5e80a3b3f1 --- /dev/null +++ b/shared/util/change-notes/released/1.0.6.md @@ -0,0 +1,3 @@ +## 1.0.6 + +No user-facing changes. diff --git a/shared/util/codeql-pack.release.yml b/shared/util/codeql-pack.release.yml index 42da17b3841..8033d980afa 100644 --- a/shared/util/codeql-pack.release.yml +++ b/shared/util/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.5 +lastReleaseVersion: 1.0.6 diff --git a/shared/util/qlpack.yml b/shared/util/qlpack.yml index 38a2417c1c2..5914dae3575 100644 --- a/shared/util/qlpack.yml +++ b/shared/util/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/util -version: 1.0.6-dev +version: 1.0.7-dev groups: shared library: true dependencies: null diff --git a/shared/xml/CHANGELOG.md b/shared/xml/CHANGELOG.md index 1b292c16876..ba782d71646 100644 --- a/shared/xml/CHANGELOG.md +++ b/shared/xml/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.6 + +No user-facing changes. + ## 1.0.5 No user-facing changes. diff --git a/shared/xml/change-notes/released/1.0.6.md b/shared/xml/change-notes/released/1.0.6.md new file mode 100644 index 00000000000..e5e80a3b3f1 --- /dev/null +++ b/shared/xml/change-notes/released/1.0.6.md @@ -0,0 +1,3 @@ +## 1.0.6 + +No user-facing changes. diff --git a/shared/xml/codeql-pack.release.yml b/shared/xml/codeql-pack.release.yml index 42da17b3841..8033d980afa 100644 --- a/shared/xml/codeql-pack.release.yml +++ b/shared/xml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.5 +lastReleaseVersion: 1.0.6 diff --git a/shared/xml/qlpack.yml b/shared/xml/qlpack.yml index 6c62493a3c8..6f272d210d2 100644 --- a/shared/xml/qlpack.yml +++ b/shared/xml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/xml -version: 1.0.6-dev +version: 1.0.7-dev groups: shared library: true dependencies: diff --git a/shared/yaml/CHANGELOG.md b/shared/yaml/CHANGELOG.md index 064f83a6efd..e9239e16de7 100644 --- a/shared/yaml/CHANGELOG.md +++ b/shared/yaml/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.6 + +No user-facing changes. + ## 1.0.5 No user-facing changes. diff --git a/shared/yaml/change-notes/released/1.0.6.md b/shared/yaml/change-notes/released/1.0.6.md new file mode 100644 index 00000000000..e5e80a3b3f1 --- /dev/null +++ b/shared/yaml/change-notes/released/1.0.6.md @@ -0,0 +1,3 @@ +## 1.0.6 + +No user-facing changes. diff --git a/shared/yaml/codeql-pack.release.yml b/shared/yaml/codeql-pack.release.yml index 42da17b3841..8033d980afa 100644 --- a/shared/yaml/codeql-pack.release.yml +++ b/shared/yaml/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.5 +lastReleaseVersion: 1.0.6 diff --git a/shared/yaml/qlpack.yml b/shared/yaml/qlpack.yml index 5fc9dd318df..e7dc99d9b83 100644 --- a/shared/yaml/qlpack.yml +++ b/shared/yaml/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/yaml -version: 1.0.6-dev +version: 1.0.7-dev groups: shared library: true warnOnImplicitThis: true diff --git a/swift/ql/integration-tests/osx-only/autobuilder/failure/.gitignore b/swift/ql/integration-tests/autobuilder/failure/.gitignore similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/failure/.gitignore rename to swift/ql/integration-tests/autobuilder/failure/.gitignore diff --git a/swift/ql/integration-tests/osx-only/autobuilder/failure/diagnostics.expected b/swift/ql/integration-tests/autobuilder/failure/diagnostics.expected similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/failure/diagnostics.expected rename to swift/ql/integration-tests/autobuilder/failure/diagnostics.expected diff --git a/swift/ql/integration-tests/osx-only/autobuilder/failure/hello-failure.xcodeproj/project.pbxproj b/swift/ql/integration-tests/autobuilder/failure/hello-failure.xcodeproj/project.pbxproj similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/failure/hello-failure.xcodeproj/project.pbxproj rename to swift/ql/integration-tests/autobuilder/failure/hello-failure.xcodeproj/project.pbxproj diff --git a/swift/ql/integration-tests/osx-only/autobuilder/failure/hello-failure.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/swift/ql/integration-tests/autobuilder/failure/hello-failure.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/failure/hello-failure.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to swift/ql/integration-tests/autobuilder/failure/hello-failure.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/swift/ql/integration-tests/osx-only/autobuilder/failure/hello-failure.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/swift/ql/integration-tests/autobuilder/failure/hello-failure.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/failure/hello-failure.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to swift/ql/integration-tests/autobuilder/failure/hello-failure.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/swift/ql/integration-tests/osx-only/autobuilder/failure/test.py b/swift/ql/integration-tests/autobuilder/failure/test.py similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/failure/test.py rename to swift/ql/integration-tests/autobuilder/failure/test.py diff --git a/swift/ql/integration-tests/osx-only/autobuilder/no-build-system/diagnostics.expected b/swift/ql/integration-tests/autobuilder/no-build-system/diagnostics.expected similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/no-build-system/diagnostics.expected rename to swift/ql/integration-tests/autobuilder/no-build-system/diagnostics.expected diff --git a/swift/ql/integration-tests/osx-only/autobuilder/no-build-system/test.py b/swift/ql/integration-tests/autobuilder/no-build-system/test.py similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/no-build-system/test.py rename to swift/ql/integration-tests/autobuilder/no-build-system/test.py diff --git a/swift/ql/integration-tests/posix-only/frontend-invocations/A.swift b/swift/ql/integration-tests/autobuilder/no-build-system/x.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/frontend-invocations/A.swift rename to swift/ql/integration-tests/autobuilder/no-build-system/x.swift diff --git a/swift/ql/integration-tests/osx-only/autobuilder/no-swift-with-spm/diagnostics.expected b/swift/ql/integration-tests/autobuilder/no-swift-with-spm/diagnostics.expected similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/no-swift-with-spm/diagnostics.expected rename to swift/ql/integration-tests/autobuilder/no-swift-with-spm/diagnostics.expected diff --git a/swift/ql/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective.xcodeproj/project.pbxproj b/swift/ql/integration-tests/autobuilder/no-swift-with-spm/hello-objective.xcodeproj/project.pbxproj similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective.xcodeproj/project.pbxproj rename to swift/ql/integration-tests/autobuilder/no-swift-with-spm/hello-objective.xcodeproj/project.pbxproj diff --git a/swift/ql/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/swift/ql/integration-tests/autobuilder/no-swift-with-spm/hello-objective.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to swift/ql/integration-tests/autobuilder/no-swift-with-spm/hello-objective.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/swift/ql/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/swift/ql/integration-tests/autobuilder/no-swift-with-spm/hello-objective.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to swift/ql/integration-tests/autobuilder/no-swift-with-spm/hello-objective.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/swift/ql/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective/Package.swift b/swift/ql/integration-tests/autobuilder/no-swift-with-spm/hello-objective/Package.swift similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective/Package.swift rename to swift/ql/integration-tests/autobuilder/no-swift-with-spm/hello-objective/Package.swift diff --git a/swift/ql/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective/main.m b/swift/ql/integration-tests/autobuilder/no-swift-with-spm/hello-objective/main.m similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/no-swift-with-spm/hello-objective/main.m rename to swift/ql/integration-tests/autobuilder/no-swift-with-spm/hello-objective/main.m diff --git a/swift/ql/integration-tests/osx-only/autobuilder/no-swift-with-spm/test.py b/swift/ql/integration-tests/autobuilder/no-swift-with-spm/test.py similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/no-swift-with-spm/test.py rename to swift/ql/integration-tests/autobuilder/no-swift-with-spm/test.py diff --git a/swift/ql/integration-tests/osx-only/autobuilder/no-swift/diagnostics.expected b/swift/ql/integration-tests/autobuilder/no-swift/diagnostics.expected similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/no-swift/diagnostics.expected rename to swift/ql/integration-tests/autobuilder/no-swift/diagnostics.expected diff --git a/swift/ql/integration-tests/osx-only/autobuilder/no-swift/hello-objective.xcodeproj/project.pbxproj b/swift/ql/integration-tests/autobuilder/no-swift/hello-objective.xcodeproj/project.pbxproj similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/no-swift/hello-objective.xcodeproj/project.pbxproj rename to swift/ql/integration-tests/autobuilder/no-swift/hello-objective.xcodeproj/project.pbxproj diff --git a/swift/ql/integration-tests/osx-only/autobuilder/no-swift/hello-objective.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/swift/ql/integration-tests/autobuilder/no-swift/hello-objective.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/no-swift/hello-objective.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to swift/ql/integration-tests/autobuilder/no-swift/hello-objective.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/swift/ql/integration-tests/osx-only/autobuilder/no-swift/hello-objective.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/swift/ql/integration-tests/autobuilder/no-swift/hello-objective.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/no-swift/hello-objective.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to swift/ql/integration-tests/autobuilder/no-swift/hello-objective.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/swift/ql/integration-tests/osx-only/autobuilder/no-swift/hello-objective/main.m b/swift/ql/integration-tests/autobuilder/no-swift/hello-objective/main.m similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/no-swift/hello-objective/main.m rename to swift/ql/integration-tests/autobuilder/no-swift/hello-objective/main.m diff --git a/swift/ql/integration-tests/osx-only/autobuilder/no-swift/test.py b/swift/ql/integration-tests/autobuilder/no-swift/test.py similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/no-swift/test.py rename to swift/ql/integration-tests/autobuilder/no-swift/test.py diff --git a/swift/ql/integration-tests/osx-only/autobuilder/no-xcode-with-spm/Package.swift b/swift/ql/integration-tests/autobuilder/no-xcode-with-spm/Package.swift similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/no-xcode-with-spm/Package.swift rename to swift/ql/integration-tests/autobuilder/no-xcode-with-spm/Package.swift diff --git a/swift/ql/integration-tests/osx-only/autobuilder/no-xcode-with-spm/diagnostics.expected b/swift/ql/integration-tests/autobuilder/no-xcode-with-spm/diagnostics.expected similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/no-xcode-with-spm/diagnostics.expected rename to swift/ql/integration-tests/autobuilder/no-xcode-with-spm/diagnostics.expected diff --git a/swift/ql/integration-tests/osx-only/autobuilder/no-xcode-with-spm/test.py b/swift/ql/integration-tests/autobuilder/no-xcode-with-spm/test.py similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/no-xcode-with-spm/test.py rename to swift/ql/integration-tests/autobuilder/no-xcode-with-spm/test.py diff --git a/swift/ql/integration-tests/posix-only/frontend-invocations/B.swift b/swift/ql/integration-tests/autobuilder/no-xcode-with-spm/x.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/frontend-invocations/B.swift rename to swift/ql/integration-tests/autobuilder/no-xcode-with-spm/x.swift diff --git a/swift/ql/integration-tests/osx-only/autobuilder/only-tests-with-spm/Package.swift b/swift/ql/integration-tests/autobuilder/only-tests-with-spm/Package.swift similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/only-tests-with-spm/Package.swift rename to swift/ql/integration-tests/autobuilder/only-tests-with-spm/Package.swift diff --git a/swift/ql/integration-tests/osx-only/autobuilder/only-tests-with-spm/diagnostics.expected b/swift/ql/integration-tests/autobuilder/only-tests-with-spm/diagnostics.expected similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/only-tests-with-spm/diagnostics.expected rename to swift/ql/integration-tests/autobuilder/only-tests-with-spm/diagnostics.expected diff --git a/swift/ql/integration-tests/osx-only/autobuilder/only-tests-with-spm/hello-tests.xcodeproj/project.pbxproj b/swift/ql/integration-tests/autobuilder/only-tests-with-spm/hello-tests.xcodeproj/project.pbxproj similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/only-tests-with-spm/hello-tests.xcodeproj/project.pbxproj rename to swift/ql/integration-tests/autobuilder/only-tests-with-spm/hello-tests.xcodeproj/project.pbxproj diff --git a/swift/ql/integration-tests/osx-only/autobuilder/only-tests-with-spm/hello-tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/swift/ql/integration-tests/autobuilder/only-tests-with-spm/hello-tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/only-tests-with-spm/hello-tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to swift/ql/integration-tests/autobuilder/only-tests-with-spm/hello-tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/swift/ql/integration-tests/osx-only/autobuilder/only-tests-with-spm/test.py b/swift/ql/integration-tests/autobuilder/only-tests-with-spm/test.py similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/only-tests-with-spm/test.py rename to swift/ql/integration-tests/autobuilder/only-tests-with-spm/test.py diff --git a/swift/ql/integration-tests/osx-only/autobuilder/only-tests/diagnostics.expected b/swift/ql/integration-tests/autobuilder/only-tests/diagnostics.expected similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/only-tests/diagnostics.expected rename to swift/ql/integration-tests/autobuilder/only-tests/diagnostics.expected diff --git a/swift/ql/integration-tests/osx-only/autobuilder/only-tests/hello-tests.xcodeproj/project.pbxproj b/swift/ql/integration-tests/autobuilder/only-tests/hello-tests.xcodeproj/project.pbxproj similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/only-tests/hello-tests.xcodeproj/project.pbxproj rename to swift/ql/integration-tests/autobuilder/only-tests/hello-tests.xcodeproj/project.pbxproj diff --git a/swift/ql/integration-tests/osx-only/autobuilder/only-tests/hello-tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/swift/ql/integration-tests/autobuilder/only-tests/hello-tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/only-tests/hello-tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to swift/ql/integration-tests/autobuilder/only-tests/hello-tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/swift/ql/integration-tests/osx-only/autobuilder/only-tests/test.py b/swift/ql/integration-tests/autobuilder/only-tests/test.py similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/only-tests/test.py rename to swift/ql/integration-tests/autobuilder/only-tests/test.py diff --git a/swift/ql/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/Files.expected b/swift/ql/integration-tests/autobuilder/xcode-fails-spm-works/Files.expected similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/Files.expected rename to swift/ql/integration-tests/autobuilder/xcode-fails-spm-works/Files.expected diff --git a/swift/ql/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/Files.ql b/swift/ql/integration-tests/autobuilder/xcode-fails-spm-works/Files.ql similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/Files.ql rename to swift/ql/integration-tests/autobuilder/xcode-fails-spm-works/Files.ql diff --git a/swift/ql/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/Package.swift b/swift/ql/integration-tests/autobuilder/xcode-fails-spm-works/Package.swift similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/Package.swift rename to swift/ql/integration-tests/autobuilder/xcode-fails-spm-works/Package.swift diff --git a/swift/ql/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/Sources/hello-world/hello_world.swift b/swift/ql/integration-tests/autobuilder/xcode-fails-spm-works/Sources/hello-world/hello_world.swift similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/Sources/hello-world/hello_world.swift rename to swift/ql/integration-tests/autobuilder/xcode-fails-spm-works/Sources/hello-world/hello_world.swift diff --git a/swift/ql/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/codeql-swift-autobuild-test.xcodeproj/project.pbxproj b/swift/ql/integration-tests/autobuilder/xcode-fails-spm-works/codeql-swift-autobuild-test.xcodeproj/project.pbxproj similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/codeql-swift-autobuild-test.xcodeproj/project.pbxproj rename to swift/ql/integration-tests/autobuilder/xcode-fails-spm-works/codeql-swift-autobuild-test.xcodeproj/project.pbxproj diff --git a/swift/ql/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/codeql-swift-autobuild-test/AppDelegate.swift b/swift/ql/integration-tests/autobuilder/xcode-fails-spm-works/codeql-swift-autobuild-test/AppDelegate.swift similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/codeql-swift-autobuild-test/AppDelegate.swift rename to swift/ql/integration-tests/autobuilder/xcode-fails-spm-works/codeql-swift-autobuild-test/AppDelegate.swift diff --git a/swift/ql/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/test.py b/swift/ql/integration-tests/autobuilder/xcode-fails-spm-works/test.py similarity index 100% rename from swift/ql/integration-tests/osx-only/autobuilder/xcode-fails-spm-works/test.py rename to swift/ql/integration-tests/autobuilder/xcode-fails-spm-works/test.py diff --git a/swift/ql/integration-tests/linux-only/RegexLiteralExpr/RegexLiteralExpr.expected b/swift/ql/integration-tests/linux/RegexLiteralExpr/RegexLiteralExpr.expected similarity index 100% rename from swift/ql/integration-tests/linux-only/RegexLiteralExpr/RegexLiteralExpr.expected rename to swift/ql/integration-tests/linux/RegexLiteralExpr/RegexLiteralExpr.expected diff --git a/swift/ql/integration-tests/linux-only/RegexLiteralExpr/RegexLiteralExpr.ql b/swift/ql/integration-tests/linux/RegexLiteralExpr/RegexLiteralExpr.ql similarity index 100% rename from swift/ql/integration-tests/linux-only/RegexLiteralExpr/RegexLiteralExpr.ql rename to swift/ql/integration-tests/linux/RegexLiteralExpr/RegexLiteralExpr.ql diff --git a/swift/ql/integration-tests/linux-only/RegexLiteralExpr/regex.swift b/swift/ql/integration-tests/linux/RegexLiteralExpr/regex.swift similarity index 100% rename from swift/ql/integration-tests/linux-only/RegexLiteralExpr/regex.swift rename to swift/ql/integration-tests/linux/RegexLiteralExpr/regex.swift diff --git a/swift/ql/integration-tests/linux-only/RegexLiteralExpr/test.py b/swift/ql/integration-tests/linux/RegexLiteralExpr/test.py similarity index 100% rename from swift/ql/integration-tests/linux-only/RegexLiteralExpr/test.py rename to swift/ql/integration-tests/linux/RegexLiteralExpr/test.py diff --git a/swift/ql/integration-tests/osx-only/canonical-case/Files.expected b/swift/ql/integration-tests/osx/canonical-case/Files.expected similarity index 100% rename from swift/ql/integration-tests/osx-only/canonical-case/Files.expected rename to swift/ql/integration-tests/osx/canonical-case/Files.expected diff --git a/swift/ql/integration-tests/osx-only/canonical-case/Files.ql b/swift/ql/integration-tests/osx/canonical-case/Files.ql similarity index 100% rename from swift/ql/integration-tests/osx-only/canonical-case/Files.ql rename to swift/ql/integration-tests/osx/canonical-case/Files.ql diff --git a/swift/ql/integration-tests/posix-only/frontend-invocations/C.swift b/swift/ql/integration-tests/osx/canonical-case/MiXeDcAsE.swifT similarity index 100% rename from swift/ql/integration-tests/posix-only/frontend-invocations/C.swift rename to swift/ql/integration-tests/osx/canonical-case/MiXeDcAsE.swifT diff --git a/swift/ql/integration-tests/osx-only/canonical-case/build.sh b/swift/ql/integration-tests/osx/canonical-case/build.sh similarity index 100% rename from swift/ql/integration-tests/osx-only/canonical-case/build.sh rename to swift/ql/integration-tests/osx/canonical-case/build.sh diff --git a/swift/ql/integration-tests/osx-only/canonical-case/test.py b/swift/ql/integration-tests/osx/canonical-case/test.py similarity index 100% rename from swift/ql/integration-tests/osx-only/canonical-case/test.py rename to swift/ql/integration-tests/osx/canonical-case/test.py diff --git a/swift/ql/integration-tests/osx-only/hello-xcode/Files.expected b/swift/ql/integration-tests/osx/hello-xcode/Files.expected similarity index 100% rename from swift/ql/integration-tests/osx-only/hello-xcode/Files.expected rename to swift/ql/integration-tests/osx/hello-xcode/Files.expected diff --git a/swift/ql/integration-tests/osx-only/hello-xcode/Files.ql b/swift/ql/integration-tests/osx/hello-xcode/Files.ql similarity index 100% rename from swift/ql/integration-tests/osx-only/hello-xcode/Files.ql rename to swift/ql/integration-tests/osx/hello-xcode/Files.ql diff --git a/swift/ql/integration-tests/osx-only/hello-xcode/codeql-swift-autobuild-test.xcodeproj/project.pbxproj b/swift/ql/integration-tests/osx/hello-xcode/codeql-swift-autobuild-test.xcodeproj/project.pbxproj similarity index 100% rename from swift/ql/integration-tests/osx-only/hello-xcode/codeql-swift-autobuild-test.xcodeproj/project.pbxproj rename to swift/ql/integration-tests/osx/hello-xcode/codeql-swift-autobuild-test.xcodeproj/project.pbxproj diff --git a/swift/ql/integration-tests/osx-only/hello-xcode/codeql-swift-autobuild-test/AppDelegate.swift b/swift/ql/integration-tests/osx/hello-xcode/codeql-swift-autobuild-test/AppDelegate.swift similarity index 100% rename from swift/ql/integration-tests/osx-only/hello-xcode/codeql-swift-autobuild-test/AppDelegate.swift rename to swift/ql/integration-tests/osx/hello-xcode/codeql-swift-autobuild-test/AppDelegate.swift diff --git a/swift/ql/integration-tests/osx-only/hello-xcode/test.py b/swift/ql/integration-tests/osx/hello-xcode/test.py similarity index 100% rename from swift/ql/integration-tests/osx-only/hello-xcode/test.py rename to swift/ql/integration-tests/osx/hello-xcode/test.py diff --git a/swift/ql/integration-tests/posix-only/cross-references/Classes.expected b/swift/ql/integration-tests/posix/cross-references/Classes.expected similarity index 100% rename from swift/ql/integration-tests/posix-only/cross-references/Classes.expected rename to swift/ql/integration-tests/posix/cross-references/Classes.expected diff --git a/swift/ql/integration-tests/posix-only/cross-references/Classes.ql b/swift/ql/integration-tests/posix/cross-references/Classes.ql similarity index 100% rename from swift/ql/integration-tests/posix-only/cross-references/Classes.ql rename to swift/ql/integration-tests/posix/cross-references/Classes.ql diff --git a/swift/ql/integration-tests/posix-only/cross-references/Deinitializers.expected b/swift/ql/integration-tests/posix/cross-references/Deinitializers.expected similarity index 100% rename from swift/ql/integration-tests/posix-only/cross-references/Deinitializers.expected rename to swift/ql/integration-tests/posix/cross-references/Deinitializers.expected diff --git a/swift/ql/integration-tests/posix-only/cross-references/Deinitializers.ql b/swift/ql/integration-tests/posix/cross-references/Deinitializers.ql similarity index 100% rename from swift/ql/integration-tests/posix-only/cross-references/Deinitializers.ql rename to swift/ql/integration-tests/posix/cross-references/Deinitializers.ql diff --git a/swift/ql/integration-tests/posix-only/cross-references/Enums.expected b/swift/ql/integration-tests/posix/cross-references/Enums.expected similarity index 100% rename from swift/ql/integration-tests/posix-only/cross-references/Enums.expected rename to swift/ql/integration-tests/posix/cross-references/Enums.expected diff --git a/swift/ql/integration-tests/posix-only/cross-references/Enums.ql b/swift/ql/integration-tests/posix/cross-references/Enums.ql similarity index 100% rename from swift/ql/integration-tests/posix-only/cross-references/Enums.ql rename to swift/ql/integration-tests/posix/cross-references/Enums.ql diff --git a/swift/ql/integration-tests/posix-only/cross-references/Functions.expected b/swift/ql/integration-tests/posix/cross-references/Functions.expected similarity index 100% rename from swift/ql/integration-tests/posix-only/cross-references/Functions.expected rename to swift/ql/integration-tests/posix/cross-references/Functions.expected diff --git a/swift/ql/integration-tests/posix-only/cross-references/Functions.ql b/swift/ql/integration-tests/posix/cross-references/Functions.ql similarity index 100% rename from swift/ql/integration-tests/posix-only/cross-references/Functions.ql rename to swift/ql/integration-tests/posix/cross-references/Functions.ql diff --git a/swift/ql/integration-tests/posix-only/cross-references/Initializers.expected b/swift/ql/integration-tests/posix/cross-references/Initializers.expected similarity index 100% rename from swift/ql/integration-tests/posix-only/cross-references/Initializers.expected rename to swift/ql/integration-tests/posix/cross-references/Initializers.expected diff --git a/swift/ql/integration-tests/posix-only/cross-references/Initializers.ql b/swift/ql/integration-tests/posix/cross-references/Initializers.ql similarity index 100% rename from swift/ql/integration-tests/posix-only/cross-references/Initializers.ql rename to swift/ql/integration-tests/posix/cross-references/Initializers.ql diff --git a/swift/ql/integration-tests/posix-only/cross-references/Module.expected b/swift/ql/integration-tests/posix/cross-references/Module.expected similarity index 100% rename from swift/ql/integration-tests/posix-only/cross-references/Module.expected rename to swift/ql/integration-tests/posix/cross-references/Module.expected diff --git a/swift/ql/integration-tests/posix-only/cross-references/Module.ql b/swift/ql/integration-tests/posix/cross-references/Module.ql similarity index 100% rename from swift/ql/integration-tests/posix-only/cross-references/Module.ql rename to swift/ql/integration-tests/posix/cross-references/Module.ql diff --git a/swift/ql/integration-tests/posix-only/cross-references/Operators.expected b/swift/ql/integration-tests/posix/cross-references/Operators.expected similarity index 100% rename from swift/ql/integration-tests/posix-only/cross-references/Operators.expected rename to swift/ql/integration-tests/posix/cross-references/Operators.expected diff --git a/swift/ql/integration-tests/posix-only/cross-references/Operators.ql b/swift/ql/integration-tests/posix/cross-references/Operators.ql similarity index 100% rename from swift/ql/integration-tests/posix-only/cross-references/Operators.ql rename to swift/ql/integration-tests/posix/cross-references/Operators.ql diff --git a/swift/ql/integration-tests/posix-only/cross-references/Package.swift b/swift/ql/integration-tests/posix/cross-references/Package.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/cross-references/Package.swift rename to swift/ql/integration-tests/posix/cross-references/Package.swift diff --git a/swift/ql/integration-tests/posix-only/cross-references/Protocols.expected b/swift/ql/integration-tests/posix/cross-references/Protocols.expected similarity index 100% rename from swift/ql/integration-tests/posix-only/cross-references/Protocols.expected rename to swift/ql/integration-tests/posix/cross-references/Protocols.expected diff --git a/swift/ql/integration-tests/posix-only/cross-references/Protocols.ql b/swift/ql/integration-tests/posix/cross-references/Protocols.ql similarity index 100% rename from swift/ql/integration-tests/posix-only/cross-references/Protocols.ql rename to swift/ql/integration-tests/posix/cross-references/Protocols.ql diff --git a/swift/ql/integration-tests/posix-only/cross-references/Sources/cross-references/lib.swift b/swift/ql/integration-tests/posix/cross-references/Sources/cross-references/lib.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/cross-references/Sources/cross-references/lib.swift rename to swift/ql/integration-tests/posix/cross-references/Sources/cross-references/lib.swift diff --git a/swift/ql/integration-tests/posix-only/cross-references/Sources/cross-references/main.swift b/swift/ql/integration-tests/posix/cross-references/Sources/cross-references/main.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/cross-references/Sources/cross-references/main.swift rename to swift/ql/integration-tests/posix/cross-references/Sources/cross-references/main.swift diff --git a/swift/ql/integration-tests/posix-only/cross-references/Structs.expected b/swift/ql/integration-tests/posix/cross-references/Structs.expected similarity index 100% rename from swift/ql/integration-tests/posix-only/cross-references/Structs.expected rename to swift/ql/integration-tests/posix/cross-references/Structs.expected diff --git a/swift/ql/integration-tests/posix-only/cross-references/Structs.ql b/swift/ql/integration-tests/posix/cross-references/Structs.ql similarity index 100% rename from swift/ql/integration-tests/posix-only/cross-references/Structs.ql rename to swift/ql/integration-tests/posix/cross-references/Structs.ql diff --git a/swift/ql/integration-tests/posix-only/cross-references/VarDecls.expected b/swift/ql/integration-tests/posix/cross-references/VarDecls.expected similarity index 100% rename from swift/ql/integration-tests/posix-only/cross-references/VarDecls.expected rename to swift/ql/integration-tests/posix/cross-references/VarDecls.expected diff --git a/swift/ql/integration-tests/posix-only/cross-references/VarDecls.ql b/swift/ql/integration-tests/posix/cross-references/VarDecls.ql similarity index 100% rename from swift/ql/integration-tests/posix-only/cross-references/VarDecls.ql rename to swift/ql/integration-tests/posix/cross-references/VarDecls.ql diff --git a/swift/ql/integration-tests/posix-only/cross-references/test.py b/swift/ql/integration-tests/posix/cross-references/test.py similarity index 100% rename from swift/ql/integration-tests/posix-only/cross-references/test.py rename to swift/ql/integration-tests/posix/cross-references/test.py diff --git a/swift/ql/integration-tests/posix-only/deduplication/BuiltinTypes.expected b/swift/ql/integration-tests/posix/deduplication/BuiltinTypes.expected similarity index 100% rename from swift/ql/integration-tests/posix-only/deduplication/BuiltinTypes.expected rename to swift/ql/integration-tests/posix/deduplication/BuiltinTypes.expected diff --git a/swift/ql/integration-tests/posix-only/deduplication/BuiltinTypes.ql b/swift/ql/integration-tests/posix/deduplication/BuiltinTypes.ql similarity index 100% rename from swift/ql/integration-tests/posix-only/deduplication/BuiltinTypes.ql rename to swift/ql/integration-tests/posix/deduplication/BuiltinTypes.ql diff --git a/swift/ql/integration-tests/posix-only/deduplication/Decls.expected b/swift/ql/integration-tests/posix/deduplication/Decls.expected similarity index 100% rename from swift/ql/integration-tests/posix-only/deduplication/Decls.expected rename to swift/ql/integration-tests/posix/deduplication/Decls.expected diff --git a/swift/ql/integration-tests/posix-only/deduplication/Decls.ql b/swift/ql/integration-tests/posix/deduplication/Decls.ql similarity index 100% rename from swift/ql/integration-tests/posix-only/deduplication/Decls.ql rename to swift/ql/integration-tests/posix/deduplication/Decls.ql diff --git a/swift/ql/integration-tests/posix-only/deduplication/Package.swift b/swift/ql/integration-tests/posix/deduplication/Package.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/deduplication/Package.swift rename to swift/ql/integration-tests/posix/deduplication/Package.swift diff --git a/swift/ql/integration-tests/posix-only/deduplication/Relevant.qll b/swift/ql/integration-tests/posix/deduplication/Relevant.qll similarity index 100% rename from swift/ql/integration-tests/posix-only/deduplication/Relevant.qll rename to swift/ql/integration-tests/posix/deduplication/Relevant.qll diff --git a/swift/ql/integration-tests/posix-only/deduplication/Sources/deduplication/def.swift b/swift/ql/integration-tests/posix/deduplication/Sources/deduplication/def.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/deduplication/Sources/deduplication/def.swift rename to swift/ql/integration-tests/posix/deduplication/Sources/deduplication/def.swift diff --git a/swift/ql/integration-tests/posix-only/deduplication/Sources/deduplication/use.swift b/swift/ql/integration-tests/posix/deduplication/Sources/deduplication/use.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/deduplication/Sources/deduplication/use.swift rename to swift/ql/integration-tests/posix/deduplication/Sources/deduplication/use.swift diff --git a/swift/ql/integration-tests/posix-only/deduplication/Types.expected b/swift/ql/integration-tests/posix/deduplication/Types.expected similarity index 100% rename from swift/ql/integration-tests/posix-only/deduplication/Types.expected rename to swift/ql/integration-tests/posix/deduplication/Types.expected diff --git a/swift/ql/integration-tests/posix-only/deduplication/Types.ql b/swift/ql/integration-tests/posix/deduplication/Types.ql similarity index 100% rename from swift/ql/integration-tests/posix-only/deduplication/Types.ql rename to swift/ql/integration-tests/posix/deduplication/Types.ql diff --git a/swift/ql/integration-tests/posix-only/deduplication/test.py b/swift/ql/integration-tests/posix/deduplication/test.py similarity index 100% rename from swift/ql/integration-tests/posix-only/deduplication/test.py rename to swift/ql/integration-tests/posix/deduplication/test.py diff --git a/swift/ql/integration-tests/posix-only/frontend-invocations/.gitignore b/swift/ql/integration-tests/posix/frontend-invocations/.gitignore similarity index 100% rename from swift/ql/integration-tests/posix-only/frontend-invocations/.gitignore rename to swift/ql/integration-tests/posix/frontend-invocations/.gitignore diff --git a/swift/ql/integration-tests/posix-only/frontend-invocations/D.swift b/swift/ql/integration-tests/posix/frontend-invocations/A.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/frontend-invocations/D.swift rename to swift/ql/integration-tests/posix/frontend-invocations/A.swift diff --git a/swift/ql/integration-tests/posix-only/frontend-invocations/E.swift b/swift/ql/integration-tests/posix/frontend-invocations/B.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/frontend-invocations/E.swift rename to swift/ql/integration-tests/posix/frontend-invocations/B.swift diff --git a/swift/ql/integration-tests/posix-only/frontend-invocations/Esup.swift b/swift/ql/integration-tests/posix/frontend-invocations/C.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/frontend-invocations/Esup.swift rename to swift/ql/integration-tests/posix/frontend-invocations/C.swift diff --git a/swift/ql/integration-tests/posix-only/frontend-invocations/G.swift b/swift/ql/integration-tests/posix/frontend-invocations/D.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/frontend-invocations/G.swift rename to swift/ql/integration-tests/posix/frontend-invocations/D.swift diff --git a/swift/ql/integration-tests/posix-only/frontend-invocations/dir/.empty b/swift/ql/integration-tests/posix/frontend-invocations/E.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/frontend-invocations/dir/.empty rename to swift/ql/integration-tests/posix/frontend-invocations/E.swift diff --git a/swift/ql/integration-tests/posix-only/partial-modules/Unknown.expected b/swift/ql/integration-tests/posix/frontend-invocations/Esup.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/partial-modules/Unknown.expected rename to swift/ql/integration-tests/posix/frontend-invocations/Esup.swift diff --git a/swift/ql/integration-tests/posix-only/frontend-invocations/F1.swift b/swift/ql/integration-tests/posix/frontend-invocations/F1.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/frontend-invocations/F1.swift rename to swift/ql/integration-tests/posix/frontend-invocations/F1.swift diff --git a/swift/ql/integration-tests/posix-only/frontend-invocations/F2.swift b/swift/ql/integration-tests/posix/frontend-invocations/F2.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/frontend-invocations/F2.swift rename to swift/ql/integration-tests/posix/frontend-invocations/F2.swift diff --git a/swift/ql/integration-tests/posix-only/frontend-invocations/F3.swift b/swift/ql/integration-tests/posix/frontend-invocations/F3.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/frontend-invocations/F3.swift rename to swift/ql/integration-tests/posix/frontend-invocations/F3.swift diff --git a/swift/ql/integration-tests/posix-only/frontend-invocations/F4.swift b/swift/ql/integration-tests/posix/frontend-invocations/F4.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/frontend-invocations/F4.swift rename to swift/ql/integration-tests/posix/frontend-invocations/F4.swift diff --git a/swift/ql/integration-tests/posix-only/frontend-invocations/F5.swift b/swift/ql/integration-tests/posix/frontend-invocations/F5.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/frontend-invocations/F5.swift rename to swift/ql/integration-tests/posix/frontend-invocations/F5.swift diff --git a/swift/ql/integration-tests/posix-only/frontend-invocations/Files.expected b/swift/ql/integration-tests/posix/frontend-invocations/Files.expected similarity index 100% rename from swift/ql/integration-tests/posix-only/frontend-invocations/Files.expected rename to swift/ql/integration-tests/posix/frontend-invocations/Files.expected diff --git a/swift/ql/integration-tests/posix-only/frontend-invocations/Files.ql b/swift/ql/integration-tests/posix/frontend-invocations/Files.ql similarity index 100% rename from swift/ql/integration-tests/posix-only/frontend-invocations/Files.ql rename to swift/ql/integration-tests/posix/frontend-invocations/Files.ql diff --git a/swift/ql/integration-tests/posix-only/symlinks/preserve/Sources/.gitkeep b/swift/ql/integration-tests/posix/frontend-invocations/G.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/symlinks/preserve/Sources/.gitkeep rename to swift/ql/integration-tests/posix/frontend-invocations/G.swift diff --git a/swift/ql/integration-tests/posix-only/frontend-invocations/H1.swift b/swift/ql/integration-tests/posix/frontend-invocations/H1.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/frontend-invocations/H1.swift rename to swift/ql/integration-tests/posix/frontend-invocations/H1.swift diff --git a/swift/ql/integration-tests/posix-only/frontend-invocations/H2.swift b/swift/ql/integration-tests/posix/frontend-invocations/H2.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/frontend-invocations/H2.swift rename to swift/ql/integration-tests/posix/frontend-invocations/H2.swift diff --git a/swift/ql/integration-tests/posix-only/frontend-invocations/H3.swift b/swift/ql/integration-tests/posix/frontend-invocations/H3.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/frontend-invocations/H3.swift rename to swift/ql/integration-tests/posix/frontend-invocations/H3.swift diff --git a/swift/ql/integration-tests/posix-only/frontend-invocations/I1.swift b/swift/ql/integration-tests/posix/frontend-invocations/I1.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/frontend-invocations/I1.swift rename to swift/ql/integration-tests/posix/frontend-invocations/I1.swift diff --git a/swift/ql/integration-tests/posix-only/frontend-invocations/I2.swift b/swift/ql/integration-tests/posix/frontend-invocations/I2.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/frontend-invocations/I2.swift rename to swift/ql/integration-tests/posix/frontend-invocations/I2.swift diff --git a/swift/ql/integration-tests/posix-only/frontend-invocations/Modules.expected b/swift/ql/integration-tests/posix/frontend-invocations/Modules.expected similarity index 100% rename from swift/ql/integration-tests/posix-only/frontend-invocations/Modules.expected rename to swift/ql/integration-tests/posix/frontend-invocations/Modules.expected diff --git a/swift/ql/integration-tests/posix-only/frontend-invocations/Modules.ql b/swift/ql/integration-tests/posix/frontend-invocations/Modules.ql similarity index 100% rename from swift/ql/integration-tests/posix-only/frontend-invocations/Modules.ql rename to swift/ql/integration-tests/posix/frontend-invocations/Modules.ql diff --git a/swift/ql/integration-tests/posix-only/frontend-invocations/build.sh b/swift/ql/integration-tests/posix/frontend-invocations/build.sh similarity index 100% rename from swift/ql/integration-tests/posix-only/frontend-invocations/build.sh rename to swift/ql/integration-tests/posix/frontend-invocations/build.sh diff --git a/swift/ql/integration-tests/posix-only/symlinks/resolve/Sources/.gitkeep b/swift/ql/integration-tests/posix/frontend-invocations/dir/.empty similarity index 100% rename from swift/ql/integration-tests/posix-only/symlinks/resolve/Sources/.gitkeep rename to swift/ql/integration-tests/posix/frontend-invocations/dir/.empty diff --git a/swift/ql/integration-tests/posix-only/frontend-invocations/test.py b/swift/ql/integration-tests/posix/frontend-invocations/test.py similarity index 100% rename from swift/ql/integration-tests/posix-only/frontend-invocations/test.py rename to swift/ql/integration-tests/posix/frontend-invocations/test.py diff --git a/swift/ql/integration-tests/posix-only/hello-world/Bodies.expected b/swift/ql/integration-tests/posix/hello-world/Bodies.expected similarity index 100% rename from swift/ql/integration-tests/posix-only/hello-world/Bodies.expected rename to swift/ql/integration-tests/posix/hello-world/Bodies.expected diff --git a/swift/ql/integration-tests/posix-only/hello-world/Bodies.ql b/swift/ql/integration-tests/posix/hello-world/Bodies.ql similarity index 100% rename from swift/ql/integration-tests/posix-only/hello-world/Bodies.ql rename to swift/ql/integration-tests/posix/hello-world/Bodies.ql diff --git a/swift/ql/integration-tests/posix-only/hello-world/Package.swift b/swift/ql/integration-tests/posix/hello-world/Package.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/hello-world/Package.swift rename to swift/ql/integration-tests/posix/hello-world/Package.swift diff --git a/swift/ql/integration-tests/posix-only/hello-world/Sources/hello-world/hello_world.swift b/swift/ql/integration-tests/posix/hello-world/Sources/hello-world/hello_world.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/hello-world/Sources/hello-world/hello_world.swift rename to swift/ql/integration-tests/posix/hello-world/Sources/hello-world/hello_world.swift diff --git a/swift/ql/integration-tests/posix-only/hello-world/test.expected b/swift/ql/integration-tests/posix/hello-world/test.expected similarity index 100% rename from swift/ql/integration-tests/posix-only/hello-world/test.expected rename to swift/ql/integration-tests/posix/hello-world/test.expected diff --git a/swift/ql/integration-tests/posix-only/hello-world/test.py b/swift/ql/integration-tests/posix/hello-world/test.py similarity index 100% rename from swift/ql/integration-tests/posix-only/hello-world/test.py rename to swift/ql/integration-tests/posix/hello-world/test.py diff --git a/swift/ql/integration-tests/posix-only/hello-world/test.ql b/swift/ql/integration-tests/posix/hello-world/test.ql similarity index 100% rename from swift/ql/integration-tests/posix-only/hello-world/test.ql rename to swift/ql/integration-tests/posix/hello-world/test.ql diff --git a/swift/ql/integration-tests/posix-only/linkage-awareness/Bodies.expected b/swift/ql/integration-tests/posix/linkage-awareness/Bodies.expected similarity index 100% rename from swift/ql/integration-tests/posix-only/linkage-awareness/Bodies.expected rename to swift/ql/integration-tests/posix/linkage-awareness/Bodies.expected diff --git a/swift/ql/integration-tests/posix-only/linkage-awareness/Bodies.ql b/swift/ql/integration-tests/posix/linkage-awareness/Bodies.ql similarity index 100% rename from swift/ql/integration-tests/posix-only/linkage-awareness/Bodies.ql rename to swift/ql/integration-tests/posix/linkage-awareness/Bodies.ql diff --git a/swift/ql/integration-tests/posix-only/linkage-awareness/Foo1/Package.swift b/swift/ql/integration-tests/posix/linkage-awareness/Foo1/Package.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/linkage-awareness/Foo1/Package.swift rename to swift/ql/integration-tests/posix/linkage-awareness/Foo1/Package.swift diff --git a/swift/ql/integration-tests/posix-only/linkage-awareness/Foo1/Sources/foo/main.swift b/swift/ql/integration-tests/posix/linkage-awareness/Foo1/Sources/foo/main.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/linkage-awareness/Foo1/Sources/foo/main.swift rename to swift/ql/integration-tests/posix/linkage-awareness/Foo1/Sources/foo/main.swift diff --git a/swift/ql/integration-tests/posix-only/linkage-awareness/Foo2/Package.swift b/swift/ql/integration-tests/posix/linkage-awareness/Foo2/Package.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/linkage-awareness/Foo2/Package.swift rename to swift/ql/integration-tests/posix/linkage-awareness/Foo2/Package.swift diff --git a/swift/ql/integration-tests/posix-only/linkage-awareness/Foo2/Sources/foo/main.swift b/swift/ql/integration-tests/posix/linkage-awareness/Foo2/Sources/foo/main.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/linkage-awareness/Foo2/Sources/foo/main.swift rename to swift/ql/integration-tests/posix/linkage-awareness/Foo2/Sources/foo/main.swift diff --git a/swift/ql/integration-tests/posix-only/linkage-awareness/build.sh b/swift/ql/integration-tests/posix/linkage-awareness/build.sh similarity index 100% rename from swift/ql/integration-tests/posix-only/linkage-awareness/build.sh rename to swift/ql/integration-tests/posix/linkage-awareness/build.sh diff --git a/swift/ql/integration-tests/posix-only/linkage-awareness/test.py b/swift/ql/integration-tests/posix/linkage-awareness/test.py similarity index 100% rename from swift/ql/integration-tests/posix-only/linkage-awareness/test.py rename to swift/ql/integration-tests/posix/linkage-awareness/test.py diff --git a/swift/ql/integration-tests/posix-only/partial-modules/A/Package.swift b/swift/ql/integration-tests/posix/partial-modules/A/Package.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/partial-modules/A/Package.swift rename to swift/ql/integration-tests/posix/partial-modules/A/Package.swift diff --git a/swift/ql/integration-tests/posix-only/partial-modules/A/Sources/A/A.swift b/swift/ql/integration-tests/posix/partial-modules/A/Sources/A/A.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/partial-modules/A/Sources/A/A.swift rename to swift/ql/integration-tests/posix/partial-modules/A/Sources/A/A.swift diff --git a/swift/ql/integration-tests/posix-only/partial-modules/A/Sources/A/Asup.swift b/swift/ql/integration-tests/posix/partial-modules/A/Sources/A/Asup.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/partial-modules/A/Sources/A/Asup.swift rename to swift/ql/integration-tests/posix/partial-modules/A/Sources/A/Asup.swift diff --git a/swift/ql/integration-tests/posix-only/partial-modules/B/Package.swift b/swift/ql/integration-tests/posix/partial-modules/B/Package.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/partial-modules/B/Package.swift rename to swift/ql/integration-tests/posix/partial-modules/B/Package.swift diff --git a/swift/ql/integration-tests/posix-only/partial-modules/B/Sources/B/B.swift b/swift/ql/integration-tests/posix/partial-modules/B/Sources/B/B.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/partial-modules/B/Sources/B/B.swift rename to swift/ql/integration-tests/posix/partial-modules/B/Sources/B/B.swift diff --git a/swift/ql/integration-tests/posix-only/partial-modules/B/Sources/B/Bsup.swift b/swift/ql/integration-tests/posix/partial-modules/B/Sources/B/Bsup.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/partial-modules/B/Sources/B/Bsup.swift rename to swift/ql/integration-tests/posix/partial-modules/B/Sources/B/Bsup.swift diff --git a/swift/ql/integration-tests/posix-only/partial-modules/Modules.expected b/swift/ql/integration-tests/posix/partial-modules/Modules.expected similarity index 100% rename from swift/ql/integration-tests/posix-only/partial-modules/Modules.expected rename to swift/ql/integration-tests/posix/partial-modules/Modules.expected diff --git a/swift/ql/integration-tests/posix-only/partial-modules/Modules.ql b/swift/ql/integration-tests/posix/partial-modules/Modules.ql similarity index 100% rename from swift/ql/integration-tests/posix-only/partial-modules/Modules.ql rename to swift/ql/integration-tests/posix/partial-modules/Modules.ql diff --git a/swift/ql/integration-tests/posix-only/partial-modules/Package.swift b/swift/ql/integration-tests/posix/partial-modules/Package.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/partial-modules/Package.swift rename to swift/ql/integration-tests/posix/partial-modules/Package.swift diff --git a/swift/ql/integration-tests/posix-only/partial-modules/Sources/partial-modules/partial_modules.swift b/swift/ql/integration-tests/posix/partial-modules/Sources/partial-modules/partial_modules.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/partial-modules/Sources/partial-modules/partial_modules.swift rename to swift/ql/integration-tests/posix/partial-modules/Sources/partial-modules/partial_modules.swift diff --git a/swift/ql/integration-tests/posix/partial-modules/Unknown.expected b/swift/ql/integration-tests/posix/partial-modules/Unknown.expected new file mode 100644 index 00000000000..e69de29bb2d diff --git a/swift/ql/integration-tests/posix-only/partial-modules/Unknown.ql b/swift/ql/integration-tests/posix/partial-modules/Unknown.ql similarity index 100% rename from swift/ql/integration-tests/posix-only/partial-modules/Unknown.ql rename to swift/ql/integration-tests/posix/partial-modules/Unknown.ql diff --git a/swift/ql/integration-tests/posix-only/partial-modules/test.py b/swift/ql/integration-tests/posix/partial-modules/test.py similarity index 100% rename from swift/ql/integration-tests/posix-only/partial-modules/test.py rename to swift/ql/integration-tests/posix/partial-modules/test.py diff --git a/swift/ql/integration-tests/posix-only/symlinks/.gitignore b/swift/ql/integration-tests/posix/symlinks/.gitignore similarity index 100% rename from swift/ql/integration-tests/posix-only/symlinks/.gitignore rename to swift/ql/integration-tests/posix/symlinks/.gitignore diff --git a/swift/ql/integration-tests/posix-only/symlinks/Files.expected b/swift/ql/integration-tests/posix/symlinks/Files.expected similarity index 100% rename from swift/ql/integration-tests/posix-only/symlinks/Files.expected rename to swift/ql/integration-tests/posix/symlinks/Files.expected diff --git a/swift/ql/integration-tests/posix-only/symlinks/Files.ql b/swift/ql/integration-tests/posix/symlinks/Files.ql similarity index 100% rename from swift/ql/integration-tests/posix-only/symlinks/Files.ql rename to swift/ql/integration-tests/posix/symlinks/Files.ql diff --git a/swift/ql/integration-tests/posix-only/symlinks/main.swift b/swift/ql/integration-tests/posix/symlinks/main.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/symlinks/main.swift rename to swift/ql/integration-tests/posix/symlinks/main.swift diff --git a/swift/ql/integration-tests/posix-only/symlinks/preserve/Package.swift b/swift/ql/integration-tests/posix/symlinks/preserve/Package.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/symlinks/preserve/Package.swift rename to swift/ql/integration-tests/posix/symlinks/preserve/Package.swift diff --git a/swift/ql/integration-tests/posix/symlinks/preserve/Sources/.gitkeep b/swift/ql/integration-tests/posix/symlinks/preserve/Sources/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/swift/ql/integration-tests/posix-only/symlinks/resolve/Package.swift b/swift/ql/integration-tests/posix/symlinks/resolve/Package.swift similarity index 100% rename from swift/ql/integration-tests/posix-only/symlinks/resolve/Package.swift rename to swift/ql/integration-tests/posix/symlinks/resolve/Package.swift diff --git a/swift/ql/integration-tests/posix/symlinks/resolve/Sources/.gitkeep b/swift/ql/integration-tests/posix/symlinks/resolve/Sources/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/swift/ql/integration-tests/posix-only/symlinks/test.py b/swift/ql/integration-tests/posix/symlinks/test.py similarity index 100% rename from swift/ql/integration-tests/posix-only/symlinks/test.py rename to swift/ql/integration-tests/posix/symlinks/test.py diff --git a/swift/ql/lib/CHANGELOG.md b/swift/ql/lib/CHANGELOG.md index b8e0122e0a0..f1e051b1bcb 100644 --- a/swift/ql/lib/CHANGELOG.md +++ b/swift/ql/lib/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.1.2 + +No user-facing changes. + ## 1.1.1 ### Minor Analysis Improvements diff --git a/swift/ql/lib/change-notes/2024-09-03-outdated-deprecations.md b/swift/ql/lib/change-notes/2024-09-03-outdated-deprecations.md new file mode 100644 index 00000000000..2970b481c50 --- /dev/null +++ b/swift/ql/lib/change-notes/2024-09-03-outdated-deprecations.md @@ -0,0 +1,5 @@ +--- +category: breaking +--- +* Deleted the deprecated `explorationLimit` predicate from `DataFlow::Configuration`, use `FlowExploration` instead. +* Deleted the deprecated `getDerivedTypeDecl` predicate from the `TypeDecl` class, use `getADerivedTypeDecl` or `getABaseTypeDecl` instead. \ No newline at end of file diff --git a/swift/ql/lib/change-notes/released/1.1.2.md b/swift/ql/lib/change-notes/released/1.1.2.md new file mode 100644 index 00000000000..ce8d2c1a4f3 --- /dev/null +++ b/swift/ql/lib/change-notes/released/1.1.2.md @@ -0,0 +1,3 @@ +## 1.1.2 + +No user-facing changes. diff --git a/swift/ql/lib/codeql-pack.release.yml b/swift/ql/lib/codeql-pack.release.yml index 1a19084be3f..53ab127707f 100644 --- a/swift/ql/lib/codeql-pack.release.yml +++ b/swift/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.1.1 +lastReleaseVersion: 1.1.2 diff --git a/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImpl1.qll b/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImpl1.qll index 3b1439511d1..359fa71744b 100644 --- a/swift/ql/lib/codeql/swift/dataflow/internal/DataFlowImpl1.qll +++ b/swift/ql/lib/codeql/swift/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/swift/ql/lib/codeql/swift/elements/decl/TypeDecl.qll b/swift/ql/lib/codeql/swift/elements/decl/TypeDecl.qll index 9055f29d6ca..15c6bd1609c 100644 --- a/swift/ql/lib/codeql/swift/elements/decl/TypeDecl.qll +++ b/swift/ql/lib/codeql/swift/elements/decl/TypeDecl.qll @@ -75,13 +75,6 @@ class TypeDecl extends Generated::TypeDecl { */ TypeDecl getABaseTypeDecl() { result = this.getABaseType().(AnyGenericType).getDeclaration() } - /** - * Gets a declaration that has this type as its `index`th base type. - * - * DEPRECATED: The index is not very meaningful here. Use `getADerivedTypeDecl` or `getABaseTypeDecl`. - */ - deprecated TypeDecl getDerivedTypeDecl(int i) { result.getBaseTypeDecl(i) = this } - /** * Gets the declaration of any type derived from this type declaration. Expands protocols * added in extensions and expands type aliases. For example in the following code, `B` diff --git a/swift/ql/lib/qlpack.yml b/swift/ql/lib/qlpack.yml index 49920fff303..cc38a4ce8e5 100644 --- a/swift/ql/lib/qlpack.yml +++ b/swift/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-all -version: 1.1.2-dev +version: 1.1.3-dev groups: swift extractor: swift dbscheme: swift.dbscheme diff --git a/swift/ql/src/CHANGELOG.md b/swift/ql/src/CHANGELOG.md index e33d96f63f5..8ced5909fd0 100644 --- a/swift/ql/src/CHANGELOG.md +++ b/swift/ql/src/CHANGELOG.md @@ -1,3 +1,9 @@ +## 1.0.6 + +### Minor Analysis Improvements + +* False positive results from the `swift/cleartext-transmission` ("Cleartext transmission of sensitive information") query involving `tel:`, `mailto:` and similar URLs have been fixed. + ## 1.0.5 ### Minor Analysis Improvements diff --git a/swift/ql/src/change-notes/2024-08-12-cleartext-transmission.md b/swift/ql/src/change-notes/released/1.0.6.md similarity index 81% rename from swift/ql/src/change-notes/2024-08-12-cleartext-transmission.md rename to swift/ql/src/change-notes/released/1.0.6.md index d8f3f3d16d5..93df2cccfdb 100644 --- a/swift/ql/src/change-notes/2024-08-12-cleartext-transmission.md +++ b/swift/ql/src/change-notes/released/1.0.6.md @@ -1,4 +1,5 @@ ---- -category: minorAnalysis ---- +## 1.0.6 + +### Minor Analysis Improvements + * False positive results from the `swift/cleartext-transmission` ("Cleartext transmission of sensitive information") query involving `tel:`, `mailto:` and similar URLs have been fixed. diff --git a/swift/ql/src/codeql-pack.release.yml b/swift/ql/src/codeql-pack.release.yml index 42da17b3841..8033d980afa 100644 --- a/swift/ql/src/codeql-pack.release.yml +++ b/swift/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.5 +lastReleaseVersion: 1.0.6 diff --git a/swift/ql/src/qlpack.yml b/swift/ql/src/qlpack.yml index 5941fbe1954..fcfbd491b37 100644 --- a/swift/ql/src/qlpack.yml +++ b/swift/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/swift-queries -version: 1.0.6-dev +version: 1.0.7-dev groups: - swift - queries diff --git a/swift/ql/src/queries/Security/CWE-020/IncompleteHostnameRegex.qhelp b/swift/ql/src/queries/Security/CWE-020/IncompleteHostnameRegex.qhelp index ef374fc9752..347a0ee0e29 100644 --- a/swift/ql/src/queries/Security/CWE-020/IncompleteHostnameRegex.qhelp +++ b/swift/ql/src/queries/Security/CWE-020/IncompleteHostnameRegex.qhelp @@ -46,7 +46,7 @@

    - +

    @@ -63,7 +63,7 @@

    - + diff --git a/swift/ql/src/queries/Security/CWE-116/BadTagFilter.qhelp b/swift/ql/src/queries/Security/CWE-116/BadTagFilter.qhelp index b406faf8e17..c312fb1a6f5 100644 --- a/swift/ql/src/queries/Security/CWE-116/BadTagFilter.qhelp +++ b/swift/ql/src/queries/Security/CWE-116/BadTagFilter.qhelp @@ -28,7 +28,7 @@ likely to handle corner cases correctly than a custom implementation. The following example attempts to filters out all <script> tags.

    - +

    The above sanitizer does not filter out all <script> tags. diff --git a/swift/ql/src/queries/Security/CWE-1333/ReDoS.qhelp b/swift/ql/src/queries/Security/CWE-1333/ReDoS.qhelp index ddbb2835bc2..e641d9b4e61 100644 --- a/swift/ql/src/queries/Security/CWE-1333/ReDoS.qhelp +++ b/swift/ql/src/queries/Security/CWE-1333/ReDoS.qhelp @@ -3,7 +3,7 @@

    Consider the following regular expression:

    - + /^_(__|.)+_$/

    Its sub-expression "(__|.)+" can match the string @@ -19,7 +19,7 @@ the ambiguity between the two branches of the alternative inside the repetition:

    - + /^_(__|[^_])+_$/ diff --git a/swift/ql/test/library-tests/dataflow/taint/core/Taint.expected b/swift/ql/test/library-tests/dataflow/taint/core/Taint.expected index 00392ecb043..c1b21928881 100644 --- a/swift/ql/test/library-tests/dataflow/taint/core/Taint.expected +++ b/swift/ql/test/library-tests/dataflow/taint/core/Taint.expected @@ -9,18 +9,13 @@ edges | conversions.swift:37:19:37:29 | call to sourceInt() | conversions.swift:37:12:37:30 | call to String.init(_:) | provenance | | | conversions.swift:39:12:39:30 | [...] [Collection element] | conversions.swift:40:12:40:12 | arr | provenance | | | conversions.swift:39:12:39:30 | [...] [Collection element] | conversions.swift:41:12:41:12 | arr [Collection element] | provenance | | -| conversions.swift:39:12:39:30 | [...] [Collection element] | conversions.swift:41:12:41:17 | ...[...] | provenance | | -| conversions.swift:39:12:39:30 | [...] [Collection element] | conversions.swift:42:20:42:20 | arr | provenance | | | conversions.swift:39:12:39:30 | [...] [Collection element] | conversions.swift:42:20:42:20 | arr [Collection element] | provenance | | -| conversions.swift:39:12:39:30 | [...] [Collection element] | conversions.swift:43:20:43:20 | arr | provenance | | | conversions.swift:39:12:39:30 | [...] [Collection element] | conversions.swift:43:20:43:20 | arr [Collection element] | provenance | | | conversions.swift:39:19:39:29 | call to sourceInt() | conversions.swift:39:12:39:30 | [...] [Collection element] | provenance | | | conversions.swift:41:12:41:12 | arr [Collection element] | conversions.swift:41:12:41:17 | ...[...] | provenance | | | conversions.swift:42:12:42:23 | call to Array.init(_:) [Collection element] | conversions.swift:42:12:42:23 | call to Array.init(_:) | provenance | | -| conversions.swift:42:20:42:20 | arr | conversions.swift:42:12:42:23 | call to Array.init(_:) [Collection element] | provenance | | | conversions.swift:42:20:42:20 | arr [Collection element] | conversions.swift:42:12:42:23 | call to Array.init(_:) [Collection element] | provenance | | | conversions.swift:43:12:43:23 | call to Array.init(_:) [Collection element] | conversions.swift:43:12:43:26 | ...[...] | provenance | | -| conversions.swift:43:20:43:20 | arr | conversions.swift:43:12:43:23 | call to Array.init(_:) [Collection element] | provenance | | | conversions.swift:43:20:43:20 | arr [Collection element] | conversions.swift:43:12:43:23 | call to Array.init(_:) [Collection element] | provenance | | | conversions.swift:44:12:44:39 | call to Array.init(_:) [Collection element] | conversions.swift:44:12:44:39 | call to Array.init(_:) | provenance | | | conversions.swift:44:20:44:33 | call to sourceString() | conversions.swift:44:20:44:35 | .utf8 | provenance | | @@ -106,32 +101,23 @@ edges | conversions.swift:171:14:171:33 | call to sourceArray(_:) | conversions.swift:185:31:185:31 | arr1 | provenance | | | conversions.swift:172:14:172:26 | [...] [Collection element] | conversions.swift:174:13:174:13 | arr2 | provenance | | | conversions.swift:172:14:172:26 | [...] [Collection element] | conversions.swift:176:13:176:13 | arr2 [Collection element] | provenance | | -| conversions.swift:172:14:172:26 | [...] [Collection element] | conversions.swift:176:13:176:19 | ...[...] | provenance | | -| conversions.swift:172:14:172:26 | [...] [Collection element] | conversions.swift:179:25:179:25 | arr2 | provenance | | | conversions.swift:172:14:172:26 | [...] [Collection element] | conversions.swift:179:25:179:25 | arr2 [Collection element] | provenance | | -| conversions.swift:172:14:172:26 | [...] [Collection element] | conversions.swift:186:31:186:31 | arr2 | provenance | | | conversions.swift:172:14:172:26 | [...] [Collection element] | conversions.swift:186:31:186:31 | arr2 [Collection element] | provenance | | | conversions.swift:172:15:172:25 | call to sourceInt() | conversions.swift:172:14:172:26 | [...] [Collection element] | provenance | | | conversions.swift:176:13:176:13 | arr2 [Collection element] | conversions.swift:176:13:176:19 | ...[...] | provenance | | | conversions.swift:178:19:178:29 | call to Array.init(_:) [Collection element] | conversions.swift:180:13:180:13 | arr1b | provenance | | | conversions.swift:178:19:178:29 | call to Array.init(_:) [Collection element] | conversions.swift:182:13:182:13 | arr1b [Collection element] | provenance | | -| conversions.swift:178:19:178:29 | call to Array.init(_:) [Collection element] | conversions.swift:182:13:182:20 | ...[...] | provenance | | | conversions.swift:178:25:178:25 | arr1 | conversions.swift:178:19:178:29 | call to Array.init(_:) [Collection element] | provenance | | | conversions.swift:179:19:179:29 | call to Array.init(_:) [Collection element] | conversions.swift:181:13:181:13 | arr2b | provenance | | | conversions.swift:179:19:179:29 | call to Array.init(_:) [Collection element] | conversions.swift:183:13:183:13 | arr2b [Collection element] | provenance | | -| conversions.swift:179:19:179:29 | call to Array.init(_:) [Collection element] | conversions.swift:183:13:183:20 | ...[...] | provenance | | -| conversions.swift:179:25:179:25 | arr2 | conversions.swift:179:19:179:29 | call to Array.init(_:) [Collection element] | provenance | | | conversions.swift:179:25:179:25 | arr2 [Collection element] | conversions.swift:179:19:179:29 | call to Array.init(_:) [Collection element] | provenance | | | conversions.swift:182:13:182:13 | arr1b [Collection element] | conversions.swift:182:13:182:20 | ...[...] | provenance | | | conversions.swift:183:13:183:13 | arr2b [Collection element] | conversions.swift:183:13:183:20 | ...[...] | provenance | | | conversions.swift:185:15:185:35 | call to ContiguousArray.init(_:) [Collection element] | conversions.swift:187:13:187:13 | arr1c | provenance | | | conversions.swift:185:15:185:35 | call to ContiguousArray.init(_:) [Collection element] | conversions.swift:189:13:189:13 | arr1c [Collection element] | provenance | | -| conversions.swift:185:15:185:35 | call to ContiguousArray.init(_:) [Collection element] | conversions.swift:189:13:189:20 | ...[...] | provenance | | | conversions.swift:185:31:185:31 | arr1 | conversions.swift:185:15:185:35 | call to ContiguousArray.init(_:) [Collection element] | provenance | | | conversions.swift:186:15:186:35 | call to ContiguousArray.init(_:) [Collection element] | conversions.swift:188:13:188:13 | arr2c | provenance | | | conversions.swift:186:15:186:35 | call to ContiguousArray.init(_:) [Collection element] | conversions.swift:190:13:190:13 | arr2c [Collection element] | provenance | | -| conversions.swift:186:15:186:35 | call to ContiguousArray.init(_:) [Collection element] | conversions.swift:190:13:190:20 | ...[...] | provenance | | -| conversions.swift:186:31:186:31 | arr2 | conversions.swift:186:15:186:35 | call to ContiguousArray.init(_:) [Collection element] | provenance | | | conversions.swift:186:31:186:31 | arr2 [Collection element] | conversions.swift:186:15:186:35 | call to ContiguousArray.init(_:) [Collection element] | provenance | | | conversions.swift:189:13:189:13 | arr1c [Collection element] | conversions.swift:189:13:189:20 | ...[...] | provenance | | | conversions.swift:190:13:190:13 | arr2c [Collection element] | conversions.swift:190:13:190:20 | ...[...] | provenance | | @@ -277,11 +263,9 @@ nodes | conversions.swift:41:12:41:17 | ...[...] | semmle.label | ...[...] | | conversions.swift:42:12:42:23 | call to Array.init(_:) | semmle.label | call to Array.init(_:) | | conversions.swift:42:12:42:23 | call to Array.init(_:) [Collection element] | semmle.label | call to Array.init(_:) [Collection element] | -| conversions.swift:42:20:42:20 | arr | semmle.label | arr | | conversions.swift:42:20:42:20 | arr [Collection element] | semmle.label | arr [Collection element] | | conversions.swift:43:12:43:23 | call to Array.init(_:) [Collection element] | semmle.label | call to Array.init(_:) [Collection element] | | conversions.swift:43:12:43:26 | ...[...] | semmle.label | ...[...] | -| conversions.swift:43:20:43:20 | arr | semmle.label | arr | | conversions.swift:43:20:43:20 | arr [Collection element] | semmle.label | arr [Collection element] | | conversions.swift:44:12:44:39 | call to Array.init(_:) | semmle.label | call to Array.init(_:) | | conversions.swift:44:12:44:39 | call to Array.init(_:) [Collection element] | semmle.label | call to Array.init(_:) [Collection element] | @@ -409,7 +393,6 @@ nodes | conversions.swift:178:19:178:29 | call to Array.init(_:) [Collection element] | semmle.label | call to Array.init(_:) [Collection element] | | conversions.swift:178:25:178:25 | arr1 | semmle.label | arr1 | | conversions.swift:179:19:179:29 | call to Array.init(_:) [Collection element] | semmle.label | call to Array.init(_:) [Collection element] | -| conversions.swift:179:25:179:25 | arr2 | semmle.label | arr2 | | conversions.swift:179:25:179:25 | arr2 [Collection element] | semmle.label | arr2 [Collection element] | | conversions.swift:180:13:180:13 | arr1b | semmle.label | arr1b | | conversions.swift:181:13:181:13 | arr2b | semmle.label | arr2b | @@ -420,7 +403,6 @@ nodes | conversions.swift:185:15:185:35 | call to ContiguousArray.init(_:) [Collection element] | semmle.label | call to ContiguousArray.init(_:) [Collection element] | | conversions.swift:185:31:185:31 | arr1 | semmle.label | arr1 | | conversions.swift:186:15:186:35 | call to ContiguousArray.init(_:) [Collection element] | semmle.label | call to ContiguousArray.init(_:) [Collection element] | -| conversions.swift:186:31:186:31 | arr2 | semmle.label | arr2 | | conversions.swift:186:31:186:31 | arr2 [Collection element] | semmle.label | arr2 [Collection element] | | conversions.swift:187:13:187:13 | arr1c | semmle.label | arr1c | | conversions.swift:188:13:188:13 | arr2c | semmle.label | arr2c | diff --git a/swift/ql/test/library-tests/dataflow/taint/libraries/set.swift b/swift/ql/test/library-tests/dataflow/taint/libraries/set.swift index 76b41ff8b93..b7ca5b86cca 100644 --- a/swift/ql/test/library-tests/dataflow/taint/libraries/set.swift +++ b/swift/ql/test/library-tests/dataflow/taint/libraries/set.swift @@ -28,7 +28,7 @@ func testSet(ix: Int) { sink(arg: taintedSet.max()!) // $ tainted=t1 sink(arg: taintedSet.firstIndex(of: source("t2"))!) sink(arg: taintedSet[taintedSet.firstIndex(of: source("t3"))!]) // $ tainted=t1 - sink(arg: taintedSet.first!) // $ tainted=t1 + sink(arg: taintedSet.first!) // $ MISSING: tainted=t1 for elem in taintedSet { sink(arg: elem) // $ tainted=t1 } @@ -100,7 +100,7 @@ func testSet(ix: Int) { sink(arg: taintedSet.sorted().randomElement()!) // $ tainted=t1 sink(arg: taintedSet.shuffled().randomElement()!) // $ tainted=t1 - sink(arg: taintedSet.lazy[taintedSet.firstIndex(of: source("t11"))!]) // $ tainted=t1 + sink(arg: taintedSet.lazy[taintedSet.firstIndex(of: source("t11"))!]) // $ MISSING: tainted=t1 var it = taintedSet.makeIterator() sink(arg: it.next()!) // $ tainted=t1 diff --git a/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.expected b/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.expected index f9c1f7bd175..0fe8ae7b868 100644 --- a/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.expected +++ b/swift/ql/test/query-tests/Security/CWE-078/CommandInjection.expected @@ -44,7 +44,6 @@ edges | CommandInjection.swift:105:12:105:12 | userControlledString | CommandInjection.swift:137:36:137:36 | userControlledString | provenance | | | CommandInjection.swift:105:12:105:12 | userControlledString | CommandInjection.swift:138:21:138:21 | userControlledString | provenance | | | CommandInjection.swift:105:12:105:12 | userControlledString | CommandInjection.swift:139:22:139:22 | userControlledString | provenance | | -| CommandInjection.swift:105:12:105:12 | userControlledString | CommandInjection.swift:140:24:140:24 | userControlledString | provenance | | | CommandInjection.swift:105:12:105:12 | userControlledString | CommandInjection.swift:150:42:150:42 | userControlledString | provenance | | | CommandInjection.swift:105:12:105:12 | userControlledString | CommandInjection.swift:151:75:151:75 | userControlledString | provenance | | | CommandInjection.swift:105:12:105:12 | userControlledString | CommandInjection.swift:154:35:154:35 | userControlledString | provenance | | @@ -65,7 +64,6 @@ edges | CommandInjection.swift:105:40:105:94 | call to String.init(contentsOf:) | CommandInjection.swift:137:36:137:36 | userControlledString | provenance | | | CommandInjection.swift:105:40:105:94 | call to String.init(contentsOf:) | CommandInjection.swift:138:21:138:21 | userControlledString | provenance | | | CommandInjection.swift:105:40:105:94 | call to String.init(contentsOf:) | CommandInjection.swift:139:22:139:22 | userControlledString | provenance | | -| CommandInjection.swift:105:40:105:94 | call to String.init(contentsOf:) | CommandInjection.swift:140:24:140:24 | userControlledString | provenance | | | CommandInjection.swift:105:40:105:94 | call to String.init(contentsOf:) | CommandInjection.swift:150:42:150:42 | userControlledString | provenance | | | CommandInjection.swift:105:40:105:94 | call to String.init(contentsOf:) | CommandInjection.swift:151:75:151:75 | userControlledString | provenance | | | CommandInjection.swift:105:40:105:94 | call to String.init(contentsOf:) | CommandInjection.swift:154:35:154:35 | userControlledString | provenance | | @@ -110,14 +108,6 @@ edges | CommandInjection.swift:138:21:138:21 | userControlledString | CommandInjection.swift:138:20:138:41 | [...] [Collection element] | provenance | | | CommandInjection.swift:139:21:139:42 | [...] [Collection element] | CommandInjection.swift:99:20:99:40 | arguments [Collection element] | provenance | | | CommandInjection.swift:139:22:139:22 | userControlledString | CommandInjection.swift:139:21:139:42 | [...] [Collection element] | provenance | | -| CommandInjection.swift:140:24:140:24 | userControlledString | CommandInjection.swift:150:42:150:42 | userControlledString | provenance | | -| CommandInjection.swift:140:24:140:24 | userControlledString | CommandInjection.swift:151:75:151:75 | userControlledString | provenance | | -| CommandInjection.swift:140:24:140:24 | userControlledString | CommandInjection.swift:154:35:154:35 | userControlledString | provenance | | -| CommandInjection.swift:140:24:140:24 | userControlledString | CommandInjection.swift:155:70:155:70 | userControlledString | provenance | | -| CommandInjection.swift:140:24:140:24 | userControlledString | CommandInjection.swift:160:53:160:53 | userControlledString | provenance | | -| CommandInjection.swift:140:24:140:24 | userControlledString | CommandInjection.swift:163:52:163:52 | userControlledString | provenance | | -| CommandInjection.swift:140:24:140:24 | userControlledString | CommandInjection.swift:164:33:164:33 | userControlledString | provenance | | -| CommandInjection.swift:140:24:140:24 | userControlledString | CommandInjection.swift:166:57:166:57 | userControlledString | provenance | | | CommandInjection.swift:151:67:151:95 | [...] [Collection element] | CommandInjection.swift:151:67:151:95 | [...] | provenance | | | CommandInjection.swift:151:75:151:75 | userControlledString | CommandInjection.swift:151:67:151:95 | [...] [Collection element] | provenance | | | CommandInjection.swift:154:23:154:55 | call to URL.init(string:) [some:0] | CommandInjection.swift:154:23:154:56 | ...! | provenance | | @@ -158,11 +148,8 @@ edges | CommandInjection.swift:205:19:205:19 | userControlledString | CommandInjection.swift:205:18:205:39 | [...] [Collection element] | provenance | | | CommandInjection.swift:207:3:207:3 | [post] getter for .p1 [arguments, Collection element] | CommandInjection.swift:207:3:207:3 | [post] getter for .p1 | provenance | | | CommandInjection.swift:207:18:207:18 | tainted1 [Collection element] | CommandInjection.swift:207:3:207:3 | [post] getter for .p1 [arguments, Collection element] | provenance | | -| CommandInjection.swift:207:18:207:18 | tainted1 [Collection element] | CommandInjection.swift:208:19:208:19 | tainted1 [Collection element] | provenance | | -| CommandInjection.swift:207:18:207:18 | tainted1 [Collection element] | CommandInjection.swift:209:18:209:18 | tainted1 [Collection element] | provenance | | | CommandInjection.swift:208:3:208:5 | [post] ...! [arguments, Collection element] | CommandInjection.swift:208:3:208:5 | [post] ...! | provenance | | | CommandInjection.swift:208:19:208:19 | tainted1 [Collection element] | CommandInjection.swift:208:3:208:5 | [post] ...! [arguments, Collection element] | provenance | | -| CommandInjection.swift:208:19:208:19 | tainted1 [Collection element] | CommandInjection.swift:209:18:209:18 | tainted1 [Collection element] | provenance | | | CommandInjection.swift:209:3:209:3 | [post] ...! [arguments, Collection element] | CommandInjection.swift:209:3:209:3 | [post] ...! | provenance | | | CommandInjection.swift:209:18:209:18 | tainted1 [Collection element] | CommandInjection.swift:209:3:209:3 | [post] ...! [arguments, Collection element] | provenance | | | CommandInjection.swift:211:30:211:51 | [...] [Collection element] | CommandInjection.swift:213:18:213:18 | tainted2 [Collection element] | provenance | | @@ -259,7 +246,6 @@ nodes | CommandInjection.swift:138:21:138:21 | userControlledString | semmle.label | userControlledString | | CommandInjection.swift:139:21:139:42 | [...] [Collection element] | semmle.label | [...] [Collection element] | | CommandInjection.swift:139:22:139:22 | userControlledString | semmle.label | userControlledString | -| CommandInjection.swift:140:24:140:24 | userControlledString | semmle.label | userControlledString | | CommandInjection.swift:150:42:150:42 | userControlledString | semmle.label | userControlledString | | CommandInjection.swift:151:67:151:95 | [...] | semmle.label | [...] | | CommandInjection.swift:151:67:151:95 | [...] [Collection element] | semmle.label | [...] [Collection element] | diff --git a/swift/ql/test/query-tests/Security/CWE-094/UnsafeJsEval.expected b/swift/ql/test/query-tests/Security/CWE-094/UnsafeJsEval.expected index 835a6a5706e..cfd68d818ef 100644 --- a/swift/ql/test/query-tests/Security/CWE-094/UnsafeJsEval.expected +++ b/swift/ql/test/query-tests/Security/CWE-094/UnsafeJsEval.expected @@ -41,16 +41,14 @@ edges | UnsafeJsEval.swift:286:51:286:51 | stringBytes [Collection element] | UnsafeJsEval.swift:287:60:287:60 | stringBytes [Collection element] | provenance | | | UnsafeJsEval.swift:287:16:287:98 | call to JSStringRetain(_:) | UnsafeJsEval.swift:291:17:291:17 | jsstr | provenance | | | UnsafeJsEval.swift:287:31:287:97 | call to JSStringCreateWithCharacters(_:_:) | UnsafeJsEval.swift:287:16:287:98 | call to JSStringRetain(_:) | provenance | | -| UnsafeJsEval.swift:287:60:287:60 | stringBytes | UnsafeJsEval.swift:287:60:287:72 | .baseAddress | provenance | Config | -| UnsafeJsEval.swift:287:60:287:60 | stringBytes [Collection element] | UnsafeJsEval.swift:287:60:287:60 | stringBytes | provenance | | +| UnsafeJsEval.swift:287:60:287:60 | stringBytes [Collection element] | UnsafeJsEval.swift:287:60:287:72 | .baseAddress | provenance | Config | | UnsafeJsEval.swift:287:60:287:72 | .baseAddress | UnsafeJsEval.swift:287:31:287:97 | call to JSStringCreateWithCharacters(_:_:) | provenance | | | UnsafeJsEval.swift:299:13:299:13 | string | UnsafeJsEval.swift:300:3:300:10 | .utf8CString | provenance | | | UnsafeJsEval.swift:300:3:300:10 | .utf8CString | UnsafeJsEval.swift:300:48:300:48 | stringBytes [Collection element] | provenance | | | UnsafeJsEval.swift:300:48:300:48 | stringBytes [Collection element] | UnsafeJsEval.swift:301:61:301:61 | stringBytes [Collection element] | provenance | | | UnsafeJsEval.swift:301:16:301:85 | call to JSStringRetain(_:) | UnsafeJsEval.swift:305:17:305:17 | jsstr | provenance | | | UnsafeJsEval.swift:301:31:301:84 | call to JSStringCreateWithUTF8CString(_:) | UnsafeJsEval.swift:301:16:301:85 | call to JSStringRetain(_:) | provenance | | -| UnsafeJsEval.swift:301:61:301:61 | stringBytes | UnsafeJsEval.swift:301:61:301:73 | .baseAddress | provenance | Config | -| UnsafeJsEval.swift:301:61:301:61 | stringBytes [Collection element] | UnsafeJsEval.swift:301:61:301:61 | stringBytes | provenance | | +| UnsafeJsEval.swift:301:61:301:61 | stringBytes [Collection element] | UnsafeJsEval.swift:301:61:301:73 | .baseAddress | provenance | Config | | UnsafeJsEval.swift:301:61:301:73 | .baseAddress | UnsafeJsEval.swift:301:31:301:84 | call to JSStringCreateWithUTF8CString(_:) | provenance | | | UnsafeJsEval.swift:318:24:318:87 | call to String.init(contentsOf:) | UnsafeJsEval.swift:320:44:320:74 | ... .+(_:_:) ... | provenance | | nodes @@ -80,7 +78,6 @@ nodes | UnsafeJsEval.swift:286:51:286:51 | stringBytes [Collection element] | semmle.label | stringBytes [Collection element] | | UnsafeJsEval.swift:287:16:287:98 | call to JSStringRetain(_:) | semmle.label | call to JSStringRetain(_:) | | UnsafeJsEval.swift:287:31:287:97 | call to JSStringCreateWithCharacters(_:_:) | semmle.label | call to JSStringCreateWithCharacters(_:_:) | -| UnsafeJsEval.swift:287:60:287:60 | stringBytes | semmle.label | stringBytes | | UnsafeJsEval.swift:287:60:287:60 | stringBytes [Collection element] | semmle.label | stringBytes [Collection element] | | UnsafeJsEval.swift:287:60:287:72 | .baseAddress | semmle.label | .baseAddress | | UnsafeJsEval.swift:291:17:291:17 | jsstr | semmle.label | jsstr | @@ -89,7 +86,6 @@ nodes | UnsafeJsEval.swift:300:48:300:48 | stringBytes [Collection element] | semmle.label | stringBytes [Collection element] | | UnsafeJsEval.swift:301:16:301:85 | call to JSStringRetain(_:) | semmle.label | call to JSStringRetain(_:) | | UnsafeJsEval.swift:301:31:301:84 | call to JSStringCreateWithUTF8CString(_:) | semmle.label | call to JSStringCreateWithUTF8CString(_:) | -| UnsafeJsEval.swift:301:61:301:61 | stringBytes | semmle.label | stringBytes | | UnsafeJsEval.swift:301:61:301:61 | stringBytes [Collection element] | semmle.label | stringBytes [Collection element] | | UnsafeJsEval.swift:301:61:301:73 | .baseAddress | semmle.label | .baseAddress | | UnsafeJsEval.swift:305:17:305:17 | jsstr | semmle.label | jsstr | diff --git a/swift/ql/test/query-tests/Security/CWE-321/HardcodedEncryptionKey.expected b/swift/ql/test/query-tests/Security/CWE-321/HardcodedEncryptionKey.expected index 0d8a259fe90..544431cfb4f 100644 --- a/swift/ql/test/query-tests/Security/CWE-321/HardcodedEncryptionKey.expected +++ b/swift/ql/test/query-tests/Security/CWE-321/HardcodedEncryptionKey.expected @@ -26,10 +26,7 @@ edges | cryptoswift.swift:94:18:94:36 | call to getConstantString() | cryptoswift.swift:155:26:155:26 | keyString | provenance | | | cryptoswift.swift:94:18:94:36 | call to getConstantString() | cryptoswift.swift:164:24:164:24 | keyString | provenance | | | cryptoswift.swift:94:18:94:36 | call to getConstantString() | cryptoswift.swift:166:24:166:24 | keyString | provenance | | -| file://:0:0:0:0 | [post] self | misc.swift:30:7:30:7 | self [Return] | provenance | | | file://:0:0:0:0 | [post] self [encryptionKey] | file://:0:0:0:0 | [post] self | provenance | | -| file://:0:0:0:0 | [post] self [encryptionKey] | file://:0:0:0:0 | [post] self | provenance | | -| file://:0:0:0:0 | [post] self [encryptionKey] | misc.swift:30:7:30:7 | self [Return] | provenance | | | file://:0:0:0:0 | [post] self [encryptionKey] | misc.swift:30:7:30:7 | self [Return] [encryptionKey] | provenance | | | file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [encryptionKey] | provenance | | | grdb.swift:21:20:21:20 | abc123 | grdb.swift:27:23:27:23 | constString | provenance | | @@ -45,11 +42,9 @@ edges | misc.swift:57:24:57:24 | abcdef123456 | misc.swift:57:19:57:38 | call to Data.init(_:) | provenance | | | misc.swift:66:2:66:2 | [post] config [encryptionKey] | misc.swift:66:2:66:2 | [post] config | provenance | | | misc.swift:66:25:66:25 | myConstKey | misc.swift:30:7:30:7 | value | provenance | | -| misc.swift:66:25:66:25 | myConstKey | misc.swift:66:2:66:2 | [post] config | provenance | | | misc.swift:66:25:66:25 | myConstKey | misc.swift:66:2:66:2 | [post] config [encryptionKey] | provenance | | | misc.swift:70:2:70:18 | [post] getter for .config [encryptionKey] | misc.swift:70:2:70:18 | [post] getter for .config | provenance | | | misc.swift:70:41:70:41 | myConstKey | misc.swift:30:7:30:7 | value | provenance | | -| misc.swift:70:41:70:41 | myConstKey | misc.swift:70:2:70:18 | [post] getter for .config | provenance | | | misc.swift:70:41:70:41 | myConstKey | misc.swift:70:2:70:18 | [post] getter for .config [encryptionKey] | provenance | | | misc.swift:73:14:73:20 | k1 | misc.swift:76:26:76:29 | .utf8 | provenance | | | misc.swift:73:28:73:34 | k2 | misc.swift:77:26:77:29 | .utf8 | provenance | | @@ -117,7 +112,6 @@ nodes | cryptoswift.swift:165:24:165:24 | key | semmle.label | key | | cryptoswift.swift:166:24:166:24 | keyString | semmle.label | keyString | | file://:0:0:0:0 | [post] self | semmle.label | [post] self | -| file://:0:0:0:0 | [post] self | semmle.label | [post] self | | file://:0:0:0:0 | [post] self [encryptionKey] | semmle.label | [post] self [encryptionKey] | | file://:0:0:0:0 | value | semmle.label | value | | grdb.swift:21:20:21:20 | abc123 | semmle.label | abc123 | @@ -128,7 +122,6 @@ nodes | grdb.swift:29:23:29:23 | constData | semmle.label | constData | | grdb.swift:31:26:31:26 | constString | semmle.label | constString | | grdb.swift:33:26:33:26 | constData | semmle.label | constData | -| misc.swift:30:7:30:7 | self [Return] | semmle.label | self [Return] | | misc.swift:30:7:30:7 | self [Return] [encryptionKey] | semmle.label | self [Return] [encryptionKey] | | misc.swift:30:7:30:7 | value | semmle.label | value | | misc.swift:57:19:57:38 | call to Data.init(_:) | semmle.label | call to Data.init(_:) | @@ -175,9 +168,7 @@ nodes | sqlite3_c_api.swift:49:36:49:36 | buffer | semmle.label | buffer | | sqlite3_c_api.swift:50:38:50:38 | buffer | semmle.label | buffer | subpaths -| misc.swift:66:25:66:25 | myConstKey | misc.swift:30:7:30:7 | value | misc.swift:30:7:30:7 | self [Return] | misc.swift:66:2:66:2 | [post] config | | misc.swift:66:25:66:25 | myConstKey | misc.swift:30:7:30:7 | value | misc.swift:30:7:30:7 | self [Return] [encryptionKey] | misc.swift:66:2:66:2 | [post] config [encryptionKey] | -| misc.swift:70:41:70:41 | myConstKey | misc.swift:30:7:30:7 | value | misc.swift:30:7:30:7 | self [Return] | misc.swift:70:2:70:18 | [post] getter for .config | | misc.swift:70:41:70:41 | myConstKey | misc.swift:30:7:30:7 | value | misc.swift:30:7:30:7 | self [Return] [encryptionKey] | misc.swift:70:2:70:18 | [post] getter for .config [encryptionKey] | #select | SQLite.swift:43:13:43:13 | hardcoded_key | SQLite.swift:43:13:43:13 | hardcoded_key | SQLite.swift:43:13:43:13 | hardcoded_key | The key 'hardcoded_key' has been initialized with hard-coded values from $@. | SQLite.swift:43:13:43:13 | hardcoded_key | hardcoded_key | diff --git a/swift/ql/test/query-tests/Security/CWE-757/InsecureTLS.expected b/swift/ql/test/query-tests/Security/CWE-757/InsecureTLS.expected index 267c16ae53b..f463e8d939b 100644 --- a/swift/ql/test/query-tests/Security/CWE-757/InsecureTLS.expected +++ b/swift/ql/test/query-tests/Security/CWE-757/InsecureTLS.expected @@ -5,33 +5,26 @@ edges | InsecureTLS.swift:23:7:23:7 | value | file://:0:0:0:0 | value | provenance | | | InsecureTLS.swift:40:3:40:3 | [post] config [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:40:3:40:3 | [post] config | provenance | | | InsecureTLS.swift:40:47:40:70 | .TLSv10 | InsecureTLS.swift:19:7:19:7 | value | provenance | | -| InsecureTLS.swift:40:47:40:70 | .TLSv10 | InsecureTLS.swift:40:3:40:3 | [post] config | provenance | | | InsecureTLS.swift:40:47:40:70 | .TLSv10 | InsecureTLS.swift:40:3:40:3 | [post] config [tlsMinimumSupportedProtocolVersion] | provenance | | | InsecureTLS.swift:45:3:45:3 | [post] config [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:45:3:45:3 | [post] config | provenance | | | InsecureTLS.swift:45:47:45:70 | .TLSv11 | InsecureTLS.swift:19:7:19:7 | value | provenance | | -| InsecureTLS.swift:45:47:45:70 | .TLSv11 | InsecureTLS.swift:45:3:45:3 | [post] config | provenance | | | InsecureTLS.swift:45:47:45:70 | .TLSv11 | InsecureTLS.swift:45:3:45:3 | [post] config [tlsMinimumSupportedProtocolVersion] | provenance | | | InsecureTLS.swift:57:3:57:3 | [post] config [tlsMaximumSupportedProtocolVersion] | InsecureTLS.swift:57:3:57:3 | [post] config | provenance | | | InsecureTLS.swift:57:47:57:70 | .TLSv10 | InsecureTLS.swift:20:7:20:7 | value | provenance | | -| InsecureTLS.swift:57:47:57:70 | .TLSv10 | InsecureTLS.swift:57:3:57:3 | [post] config | provenance | | | InsecureTLS.swift:57:47:57:70 | .TLSv10 | InsecureTLS.swift:57:3:57:3 | [post] config [tlsMaximumSupportedProtocolVersion] | provenance | | | InsecureTLS.swift:64:3:64:3 | [post] config [tlsMinimumSupportedProtocol] | InsecureTLS.swift:64:3:64:3 | [post] config | provenance | | | InsecureTLS.swift:64:40:64:52 | .tlsProtocol10 | InsecureTLS.swift:22:7:22:7 | value | provenance | | -| InsecureTLS.swift:64:40:64:52 | .tlsProtocol10 | InsecureTLS.swift:64:3:64:3 | [post] config | provenance | | | InsecureTLS.swift:64:40:64:52 | .tlsProtocol10 | InsecureTLS.swift:64:3:64:3 | [post] config [tlsMinimumSupportedProtocol] | provenance | | | InsecureTLS.swift:76:3:76:3 | [post] config [tlsMaximumSupportedProtocol] | InsecureTLS.swift:76:3:76:3 | [post] config | provenance | | | InsecureTLS.swift:76:40:76:52 | .tlsProtocol10 | InsecureTLS.swift:23:7:23:7 | value | provenance | | -| InsecureTLS.swift:76:40:76:52 | .tlsProtocol10 | InsecureTLS.swift:76:3:76:3 | [post] config | provenance | | | InsecureTLS.swift:76:40:76:52 | .tlsProtocol10 | InsecureTLS.swift:76:3:76:3 | [post] config [tlsMaximumSupportedProtocol] | provenance | | | InsecureTLS.swift:102:10:102:33 | .TLSv10 | InsecureTLS.swift:111:47:111:64 | call to getBadTLSVersion() | provenance | | | InsecureTLS.swift:111:3:111:3 | [post] config [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:111:3:111:3 | [post] config | provenance | | | InsecureTLS.swift:111:47:111:64 | call to getBadTLSVersion() | InsecureTLS.swift:19:7:19:7 | value | provenance | | -| InsecureTLS.swift:111:47:111:64 | call to getBadTLSVersion() | InsecureTLS.swift:111:3:111:3 | [post] config | provenance | | | InsecureTLS.swift:111:47:111:64 | call to getBadTLSVersion() | InsecureTLS.swift:111:3:111:3 | [post] config [tlsMinimumSupportedProtocolVersion] | provenance | | | InsecureTLS.swift:121:55:121:66 | version | InsecureTLS.swift:122:47:122:47 | version | provenance | | | InsecureTLS.swift:122:3:122:3 | [post] config [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:122:3:122:3 | [post] config | provenance | | | InsecureTLS.swift:122:47:122:47 | version | InsecureTLS.swift:19:7:19:7 | value | provenance | | -| InsecureTLS.swift:122:47:122:47 | version | InsecureTLS.swift:122:3:122:3 | [post] config | provenance | | | InsecureTLS.swift:122:47:122:47 | version | InsecureTLS.swift:122:3:122:3 | [post] config [tlsMinimumSupportedProtocolVersion] | provenance | | | InsecureTLS.swift:127:25:127:48 | .TLSv11 | InsecureTLS.swift:121:55:121:66 | version | provenance | | | InsecureTLS.swift:158:7:158:7 | self [TLSVersion] | file://:0:0:0:0 | self [TLSVersion] | provenance | | @@ -43,11 +36,9 @@ edges | InsecureTLS.swift:165:47:165:47 | def [TLSVersion] | InsecureTLS.swift:158:7:158:7 | self [TLSVersion] | provenance | | | InsecureTLS.swift:165:47:165:47 | def [TLSVersion] | InsecureTLS.swift:165:47:165:51 | .TLSVersion | provenance | | | InsecureTLS.swift:165:47:165:51 | .TLSVersion | InsecureTLS.swift:19:7:19:7 | value | provenance | | -| InsecureTLS.swift:165:47:165:51 | .TLSVersion | InsecureTLS.swift:165:3:165:3 | [post] config | provenance | | | InsecureTLS.swift:165:47:165:51 | .TLSVersion | InsecureTLS.swift:165:3:165:3 | [post] config [tlsMinimumSupportedProtocolVersion] | provenance | | | InsecureTLS.swift:181:3:181:9 | [post] getter for .config [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:181:3:181:9 | [post] getter for .config | provenance | | | InsecureTLS.swift:181:53:181:76 | .TLSv10 | InsecureTLS.swift:19:7:19:7 | value | provenance | | -| InsecureTLS.swift:181:53:181:76 | .TLSv10 | InsecureTLS.swift:181:3:181:9 | [post] getter for .config | provenance | | | InsecureTLS.swift:181:53:181:76 | .TLSv10 | InsecureTLS.swift:181:3:181:9 | [post] getter for .config [tlsMinimumSupportedProtocolVersion] | provenance | | | InsecureTLS.swift:185:20:185:36 | withMinVersion | InsecureTLS.swift:187:42:187:42 | withMinVersion | provenance | | | InsecureTLS.swift:187:5:187:5 | [post] self [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:187:5:187:5 | [post] self | provenance | | @@ -58,27 +49,15 @@ edges | InsecureTLS.swift:202:24:202:31 | [post] getter for .tlsMinimumSupportedProtocolVersion | InsecureTLS.swift:202:24:202:24 | [post] config [tlsMinimumSupportedProtocolVersion] | provenance | | | InsecureTLS.swift:202:74:202:97 | .TLSv10 | InsecureTLS.swift:196:56:196:63 | value | provenance | | | InsecureTLS.swift:202:74:202:97 | .TLSv10 | InsecureTLS.swift:202:24:202:31 | [post] getter for .tlsMinimumSupportedProtocolVersion | provenance | | -| file://:0:0:0:0 | [post] self | InsecureTLS.swift:19:7:19:7 | self [Return] | provenance | | -| file://:0:0:0:0 | [post] self | InsecureTLS.swift:20:7:20:7 | self [Return] | provenance | | -| file://:0:0:0:0 | [post] self | InsecureTLS.swift:22:7:22:7 | self [Return] | provenance | | -| file://:0:0:0:0 | [post] self | InsecureTLS.swift:23:7:23:7 | self [Return] | provenance | | | file://:0:0:0:0 | [post] self [TLSVersion] | InsecureTLS.swift:158:7:158:7 | self [Return] [TLSVersion] | provenance | | -| file://:0:0:0:0 | [post] self [tlsMaximumSupportedProtocolVersion] | InsecureTLS.swift:20:7:20:7 | self [Return] | provenance | | | file://:0:0:0:0 | [post] self [tlsMaximumSupportedProtocolVersion] | InsecureTLS.swift:20:7:20:7 | self [Return] [tlsMaximumSupportedProtocolVersion] | provenance | | | file://:0:0:0:0 | [post] self [tlsMaximumSupportedProtocolVersion] | file://:0:0:0:0 | [post] self | provenance | | -| file://:0:0:0:0 | [post] self [tlsMaximumSupportedProtocolVersion] | file://:0:0:0:0 | [post] self | provenance | | -| file://:0:0:0:0 | [post] self [tlsMaximumSupportedProtocol] | InsecureTLS.swift:23:7:23:7 | self [Return] | provenance | | | file://:0:0:0:0 | [post] self [tlsMaximumSupportedProtocol] | InsecureTLS.swift:23:7:23:7 | self [Return] [tlsMaximumSupportedProtocol] | provenance | | | file://:0:0:0:0 | [post] self [tlsMaximumSupportedProtocol] | file://:0:0:0:0 | [post] self | provenance | | -| file://:0:0:0:0 | [post] self [tlsMaximumSupportedProtocol] | file://:0:0:0:0 | [post] self | provenance | | -| file://:0:0:0:0 | [post] self [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:19:7:19:7 | self [Return] | provenance | | | file://:0:0:0:0 | [post] self [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:19:7:19:7 | self [Return] [tlsMinimumSupportedProtocolVersion] | provenance | | | file://:0:0:0:0 | [post] self [tlsMinimumSupportedProtocolVersion] | file://:0:0:0:0 | [post] self | provenance | | -| file://:0:0:0:0 | [post] self [tlsMinimumSupportedProtocolVersion] | file://:0:0:0:0 | [post] self | provenance | | -| file://:0:0:0:0 | [post] self [tlsMinimumSupportedProtocol] | InsecureTLS.swift:22:7:22:7 | self [Return] | provenance | | | file://:0:0:0:0 | [post] self [tlsMinimumSupportedProtocol] | InsecureTLS.swift:22:7:22:7 | self [Return] [tlsMinimumSupportedProtocol] | provenance | | | file://:0:0:0:0 | [post] self [tlsMinimumSupportedProtocol] | file://:0:0:0:0 | [post] self | provenance | | -| file://:0:0:0:0 | [post] self [tlsMinimumSupportedProtocol] | file://:0:0:0:0 | [post] self | provenance | | | file://:0:0:0:0 | self [TLSVersion] | file://:0:0:0:0 | .TLSVersion | provenance | | | file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [TLSVersion] | provenance | | | file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [tlsMaximumSupportedProtocolVersion] | provenance | | @@ -86,16 +65,12 @@ edges | file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [tlsMinimumSupportedProtocolVersion] | provenance | | | file://:0:0:0:0 | value | file://:0:0:0:0 | [post] self [tlsMinimumSupportedProtocol] | provenance | | nodes -| InsecureTLS.swift:19:7:19:7 | self [Return] | semmle.label | self [Return] | | InsecureTLS.swift:19:7:19:7 | self [Return] [tlsMinimumSupportedProtocolVersion] | semmle.label | self [Return] [tlsMinimumSupportedProtocolVersion] | | InsecureTLS.swift:19:7:19:7 | value | semmle.label | value | -| InsecureTLS.swift:20:7:20:7 | self [Return] | semmle.label | self [Return] | | InsecureTLS.swift:20:7:20:7 | self [Return] [tlsMaximumSupportedProtocolVersion] | semmle.label | self [Return] [tlsMaximumSupportedProtocolVersion] | | InsecureTLS.swift:20:7:20:7 | value | semmle.label | value | -| InsecureTLS.swift:22:7:22:7 | self [Return] | semmle.label | self [Return] | | InsecureTLS.swift:22:7:22:7 | self [Return] [tlsMinimumSupportedProtocol] | semmle.label | self [Return] [tlsMinimumSupportedProtocol] | | InsecureTLS.swift:22:7:22:7 | value | semmle.label | value | -| InsecureTLS.swift:23:7:23:7 | self [Return] | semmle.label | self [Return] | | InsecureTLS.swift:23:7:23:7 | self [Return] [tlsMaximumSupportedProtocol] | semmle.label | self [Return] [tlsMaximumSupportedProtocol] | | InsecureTLS.swift:23:7:23:7 | value | semmle.label | value | | InsecureTLS.swift:40:3:40:3 | [post] config | semmle.label | [post] config | @@ -150,10 +125,6 @@ nodes | file://:0:0:0:0 | [post] self | semmle.label | [post] self | | file://:0:0:0:0 | [post] self | semmle.label | [post] self | | file://:0:0:0:0 | [post] self | semmle.label | [post] self | -| file://:0:0:0:0 | [post] self | semmle.label | [post] self | -| file://:0:0:0:0 | [post] self | semmle.label | [post] self | -| file://:0:0:0:0 | [post] self | semmle.label | [post] self | -| file://:0:0:0:0 | [post] self | semmle.label | [post] self | | file://:0:0:0:0 | [post] self [TLSVersion] | semmle.label | [post] self [TLSVersion] | | file://:0:0:0:0 | [post] self [tlsMaximumSupportedProtocolVersion] | semmle.label | [post] self [tlsMaximumSupportedProtocolVersion] | | file://:0:0:0:0 | [post] self [tlsMaximumSupportedProtocol] | semmle.label | [post] self [tlsMaximumSupportedProtocol] | @@ -166,25 +137,16 @@ nodes | file://:0:0:0:0 | value | semmle.label | value | | file://:0:0:0:0 | value | semmle.label | value | subpaths -| InsecureTLS.swift:40:47:40:70 | .TLSv10 | InsecureTLS.swift:19:7:19:7 | value | InsecureTLS.swift:19:7:19:7 | self [Return] | InsecureTLS.swift:40:3:40:3 | [post] config | | InsecureTLS.swift:40:47:40:70 | .TLSv10 | InsecureTLS.swift:19:7:19:7 | value | InsecureTLS.swift:19:7:19:7 | self [Return] [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:40:3:40:3 | [post] config [tlsMinimumSupportedProtocolVersion] | -| InsecureTLS.swift:45:47:45:70 | .TLSv11 | InsecureTLS.swift:19:7:19:7 | value | InsecureTLS.swift:19:7:19:7 | self [Return] | InsecureTLS.swift:45:3:45:3 | [post] config | | InsecureTLS.swift:45:47:45:70 | .TLSv11 | InsecureTLS.swift:19:7:19:7 | value | InsecureTLS.swift:19:7:19:7 | self [Return] [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:45:3:45:3 | [post] config [tlsMinimumSupportedProtocolVersion] | -| InsecureTLS.swift:57:47:57:70 | .TLSv10 | InsecureTLS.swift:20:7:20:7 | value | InsecureTLS.swift:20:7:20:7 | self [Return] | InsecureTLS.swift:57:3:57:3 | [post] config | | InsecureTLS.swift:57:47:57:70 | .TLSv10 | InsecureTLS.swift:20:7:20:7 | value | InsecureTLS.swift:20:7:20:7 | self [Return] [tlsMaximumSupportedProtocolVersion] | InsecureTLS.swift:57:3:57:3 | [post] config [tlsMaximumSupportedProtocolVersion] | -| InsecureTLS.swift:64:40:64:52 | .tlsProtocol10 | InsecureTLS.swift:22:7:22:7 | value | InsecureTLS.swift:22:7:22:7 | self [Return] | InsecureTLS.swift:64:3:64:3 | [post] config | | InsecureTLS.swift:64:40:64:52 | .tlsProtocol10 | InsecureTLS.swift:22:7:22:7 | value | InsecureTLS.swift:22:7:22:7 | self [Return] [tlsMinimumSupportedProtocol] | InsecureTLS.swift:64:3:64:3 | [post] config [tlsMinimumSupportedProtocol] | -| InsecureTLS.swift:76:40:76:52 | .tlsProtocol10 | InsecureTLS.swift:23:7:23:7 | value | InsecureTLS.swift:23:7:23:7 | self [Return] | InsecureTLS.swift:76:3:76:3 | [post] config | | InsecureTLS.swift:76:40:76:52 | .tlsProtocol10 | InsecureTLS.swift:23:7:23:7 | value | InsecureTLS.swift:23:7:23:7 | self [Return] [tlsMaximumSupportedProtocol] | InsecureTLS.swift:76:3:76:3 | [post] config [tlsMaximumSupportedProtocol] | -| InsecureTLS.swift:111:47:111:64 | call to getBadTLSVersion() | InsecureTLS.swift:19:7:19:7 | value | InsecureTLS.swift:19:7:19:7 | self [Return] | InsecureTLS.swift:111:3:111:3 | [post] config | | InsecureTLS.swift:111:47:111:64 | call to getBadTLSVersion() | InsecureTLS.swift:19:7:19:7 | value | InsecureTLS.swift:19:7:19:7 | self [Return] [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:111:3:111:3 | [post] config [tlsMinimumSupportedProtocolVersion] | -| InsecureTLS.swift:122:47:122:47 | version | InsecureTLS.swift:19:7:19:7 | value | InsecureTLS.swift:19:7:19:7 | self [Return] | InsecureTLS.swift:122:3:122:3 | [post] config | | InsecureTLS.swift:122:47:122:47 | version | InsecureTLS.swift:19:7:19:7 | value | InsecureTLS.swift:19:7:19:7 | self [Return] [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:122:3:122:3 | [post] config [tlsMinimumSupportedProtocolVersion] | | InsecureTLS.swift:163:20:163:43 | .TLSv10 | InsecureTLS.swift:158:7:158:7 | value | InsecureTLS.swift:158:7:158:7 | self [Return] [TLSVersion] | InsecureTLS.swift:163:3:163:3 | [post] def [TLSVersion] | | InsecureTLS.swift:165:47:165:47 | def [TLSVersion] | InsecureTLS.swift:158:7:158:7 | self [TLSVersion] | file://:0:0:0:0 | .TLSVersion | InsecureTLS.swift:165:47:165:51 | .TLSVersion | -| InsecureTLS.swift:165:47:165:51 | .TLSVersion | InsecureTLS.swift:19:7:19:7 | value | InsecureTLS.swift:19:7:19:7 | self [Return] | InsecureTLS.swift:165:3:165:3 | [post] config | | InsecureTLS.swift:165:47:165:51 | .TLSVersion | InsecureTLS.swift:19:7:19:7 | value | InsecureTLS.swift:19:7:19:7 | self [Return] [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:165:3:165:3 | [post] config [tlsMinimumSupportedProtocolVersion] | -| InsecureTLS.swift:181:53:181:76 | .TLSv10 | InsecureTLS.swift:19:7:19:7 | value | InsecureTLS.swift:19:7:19:7 | self [Return] | InsecureTLS.swift:181:3:181:9 | [post] getter for .config | | InsecureTLS.swift:181:53:181:76 | .TLSv10 | InsecureTLS.swift:19:7:19:7 | value | InsecureTLS.swift:19:7:19:7 | self [Return] [tlsMinimumSupportedProtocolVersion] | InsecureTLS.swift:181:3:181:9 | [post] getter for .config [tlsMinimumSupportedProtocolVersion] | | InsecureTLS.swift:202:74:202:97 | .TLSv10 | InsecureTLS.swift:196:56:196:63 | value | InsecureTLS.swift:196:1:198:1 | version[return] | InsecureTLS.swift:202:24:202:31 | [post] getter for .tlsMinimumSupportedProtocolVersion | #select diff --git a/swift/third_party/load.bzl b/swift/third_party/load.bzl index 8a16963f513..f9f46e5f410 100644 --- a/swift/third_party/load.bzl +++ b/swift/third_party/load.bzl @@ -1,11 +1,11 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe") -_swift_prebuilt_version = "swift-5.10-RELEASE.322" +_swift_prebuilt_version = "swift-5.10.1-RELEASE.323" _swift_sha_map = { - "Linux-X64": "634497779e930a808489e5d472753b604c07085abf411356cae7921bde14130f", - "macOS-ARM64": "293df92da9a3cc79c595a28b1b4ec881a5fdb248ea7eac34c89943e94deff700", - "macOS-X64": "813c1746777701d30e716c130b0bb087a9c5b7ab025fd99afc695ec52cd432ad", + "Linux-X64": "29c7c53ab2f438e85daecdb4567173c78ac32afc45753d7277d744aed515229d", + "macOS-ARM64": "e697f423c8abcb8a942246489fd4f8ce71472119510b64b2073eaeaec86b771e", + "macOS-X64": "faef29334e8615e8a71263c7453ebc7e566d6f2928d827675f6faae233c544a6", } _swift_arch_map = {